2010-09-18 4 views
0

Salut j'ai Entity Model avec LETs dire 3 entité est comme si tous liés bien sûr:Entity Framework

1.-----Costumers------- 
    CustomerId 
    CustomerName 

2.----CustomersOrders----- 
    CustomerId 
    OrderId 
    Total 

3.---Orders------ 
    OrderId 
    OrderName 

Et je veux afficher les ordres de certains costumer dans GridView comme ceci:

----------|---------- 
OrderName|Total 
----------|---------- 
My order | 10000 

Mais le problème est que la source de données d'entité me donne l'identifiant de commande au lieu du nom comment puis-je l'utiliser pour obtenir OrderName lié pour la commande?

Un grand merci ....

+1

Pourriez-vous formater votre question un peu plus clair s'il vous plaît? Vous n'écrivez pas non plus à quoi ressemble votre expression de requête ni quelle langue vous utilisez. – Holstebroe

Répondre

2

Je suppose que vous avez défini les trois entités ayant des propriétés de navigation reliant les clients à CustomersOrders et CustomersOrders aux ordres. Si ce n'est pas le cas, utilisez le concepteur de modèle d'entité dans lequel vous pouvez faire un clic droit sur vos entités et ajouter les associations pertinentes entre les entités. N'oubliez pas de vérifier que vous générez des propriétés de navigation. Si le contexte du modèle est configuré de cette manière, il est facile d'interroger les commandes de vos clients. Il y a plusieurs façons de le faire. L'un d'eux pourrait être une expression LINQ:

using (var context = new MyEntityContext()) 
{ 
    var query = from customerOrder 
       in context.CustomersOrders 
       where customerOrder.CustomerId.Equals(myCustomerId) 
       select customerOrder; 

    myGridView.ItemsSource = query.ToList(); 
} 

Ici, je suppose que vous avez un customerId à myCustomerId. Si vous avez seulement un nom, pas un identifiant que vous pourriez faire quelque chose comme:

using (var context = new MyEntityContext()) 
{ 
    var query = from customerOrder 
       in context.CustomersOrders.Include("Orders") 
       where customerOrder.Customer.Name.Equals(myCustomerName) 
       select customerOrder; 

    myGridView.ItemsSource = query.ToList(); 
} 

Dans ce qui précède, je suppose que votre propriété de navigation CustomersOrders au Client est appelé « Client ». L'option "Inclure" s'assure que les commandes associées sont chargées. Si non inclus, l'appel ToList supposera que vous n'avez pas besoin des commandes et vous ne serez pas en mesure de s'y référer dans votre GridView.

Selon vous de la grille que vous pouvez faire une liaison au OrderName en utilisant Path = Order.OrderName et une fixation à Total avec Path = Total. Ici, je suppose que votre propriété de navigation de CustomersOrders aux commandes est appelée "Commande".