Definindo relacionamentos SQL para consultas LINQ
-
26-09-2019 - |
Pergunta
Eu tenho duas tabelas que estou tentando criar um relacionamento entre, para que eu possa escrever boas consultas LINQ que não precisam de ingressar.
Widgets
WidgetId
WidgetDescription
Orders
OrderId
WidgetId
OrderDate
O que eu quero poder fazer é criar uma consulta LINQ que faça algo semelhante a:
var result = from x in db.Widgets
Where x.Orders.OrderDate == "5/11/2010"
select x;
Não consigo obter o Intellitext para pegar o outro banco de dados, apesar de criar um relacionamento no SQL Server. Existem medidas adicionais que preciso tomar para fazer isso funcionar?
Solução
Eu não acho que isso poderia ser feito sem adicionar nenhum OrderDate
para widgets no seu banco de dados ou executando uma consulta de junção antes de consultar.
Eu faria algo assim.
var firstQuery = (for w in Widgets
join o in Orders
on w.WidgetId equals o.WidgetID
select new {Widgets = w, OrderDate = o.OrderDate}).Distinct();
var secondQuery = for record in firstQuery
where record.OrderDate == "5/11/2010"
select record.Widgets;
Dessa forma, você consegue um OrderDate
Para cada registro do widget.
Outras dicas
Que tal algo como:
var result = from widgetId in
(from order in orderContext.Orders
where order.OrderDate == new DateTime(2010, 5, 11)
select order.WidgetId)
from widget in widgetContext.Widgets
where widget.WidgetId = widgetId
select widget;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow