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?

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top