2010-05-28 10 views
1

J'ai ce qui semble être une simple question sur EF 1.0 et ont été à la recherche sur tout le web pour une réponse simple, mais ont pas eu de chance jusqu'à présent:à plusieurs dans les EF

Nous sommes sur le point pour créer une petite application avec SQL Server en tant que backend et ont envisagé d'utiliser EF 1.0. Notre entreprise, comme beaucoup de grandes entreprises, n'agit pas rapidement en adoptant de nouvelles plates-formes, ce qui signifie que .NET 4.0 ne sera pas installé sur les machines pendant un certain temps, donc EF 4.0 n'est pas une possibilité.

est ici la question (basée sur un exemple extrêmement simple):

Trois tables dans une relation plusieurs à plusieurs:

Ordre: OrderID (PK), Client, OrderDate

OrderDetails: OrderDetailID (PK), OrderID (FK), ProductID (FK), Quantité, en rupture de stock

produit: ProductID (PK), ProductName, Catégorie

Ce que nous créons quoi est une instance de commande qui a Demander informations et une liste des OrderDetails y compris le ProductName

SQL pour cela est trivial, donc je vous ne vais pas ennuyer avec cela. Et obtenir l'ordre et la liste de OrderDetails est facile dans EF 1.0, aussi. Mais quand vous obtenez la liste ProductID identifiera le produit, et nous avons besoin de ProductName.

Nous avons examiné this article. Est-ce la seule façon d'accomplir ce dont nous avons besoin? On dirait beaucoup de travail ...

Merci pour toute aide

+0

vous souhaitez insérer un ordre, une liste de ses OrderDetails, chacun de ceux ayant un produit. Je suppose que les OrderDetails sont également nouveaux, ce qui nécessite une insertion, mais qu'en est-il du produit, est-ce un produit existant? –

+0

Hm, je ne peux pas comprendre si vous essayez d'insérer une nouvelle entité dans le magasin de données, ou pour sélectionner un existant avec des propriétés de navigation remplies. –

+0

Désolé, je n'étais pas assez clair dans la question. C'était le choix que je cherchais, et je pense qu'il a été répondu. Merci. –

Répondre

0

extrapolant à partir de votre description, et si une sélection est ce que vous cherchez quelque chose le long de ces lignes pourrait fonctionner:

var query = from o in context.Order 
          .Include("OrderDetails") 
          .Include("OrderDetails.Product") 
      select o; 

vous pouvez alors accéder aux informations par les propriétés de navigation, tels que:

// using first here just for exemple purpose. 
Order o = query.First(); 
var details = o.OrderDetails; 
var aProductName = o.OrderDetails.First().ProductName; 
Questions connexes