Configuration des relations SQL pour les requêtes LINQ
-
26-09-2019 - |
Question
J'ai deux tables que je suis en train de créer une relation entre je peux écrire de belles requêtes LINQ qui ne nécessitent pas se joindre.
Widgets
WidgetId
WidgetDescription
Orders
OrderId
WidgetId
OrderDate
Ce que je veux être en mesure de faire est de créer une requête LINQ qui fait quelque chose de similaire à:
var result = from x in db.Widgets
Where x.Orders.OrderDate == "5/11/2010"
select x;
Je ne peux pas sembler obtenir intellitext pour ramasser l'autre base de données, malgré la création d'une relation dans le serveur SQL. Y a-t-il des mesures supplémentaires que je dois prendre pour faire ce travail?
La solution
Je ne pense pas que cela pourrait se faire sans ajouter ni à OrderDate
Widgets dans votre base de données, ou l'exécution d'une requête de jointure avant d'interroger il.
Je ferais quelque chose comme ça.
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;
De cette façon, vous obtenez un OrderDate
pour chaque enregistrement widget.
Autres conseils
Que diriez-vous quelque chose comme:
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;