2010-09-18 5 views
0

Привет у меня есть Entity модель с позволяет говорить 3 субъекта как и все связанные конечно:Entity Framework

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

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

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

И я хочу, чтобы отобразить заказы некоторой костюмера в GridView следующим образом:

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

Но проблема заключается в том, что источник данных сущности дает мне идентификатор заказа вместо имени, как я могу использовать его для получения соответствующего OrderName для заказа?

Большое спасибо ....

+1

Не могли бы вы отформатировать свой вопрос немного яснее, пожалуйста? Вы также не пишете, как выглядит выражение запроса или какой язык вы используете. – Holstebroe

ответ

2

Я предполагаю, что вы определили три объекта с навигационными свойствами подключения Клиентов к CustomersOrders и CustomersOrders Поручениям. Если не использовать конструктор модели сущности, где вы можете щелкнуть правой кнопкой мыши свои объекты и добавить соответствующие ассоциации между объектами. Не забудьте проверить, что вы генерируете навигационные свойства. Если контекст модели настроен таким образом, вы можете запросить заказы своего клиента. Существует несколько способов сделать это. Один из них может быть выражение LINQ:

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

    myGridView.ItemsSource = query.ToList(); 
} 

Здесь я предполагаю, что у вас есть CUSTOMERID в myCustomerId. Если у вас есть только название, а не Id вы могли бы сделать что-то вроде:

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(); 
} 

Выше я предполагаю, что ваше навигационное имущество от CustomersOrders Заказчика называется «Клиентом». «Включить» позволяет загружать связанные заказы. Если не включен, вызов ToList предполагает, что вам не нужны заказы, и вы не сможете обращаться к ним в своем GridView.

В виде сетки вы можете сделать привязку к OrderName, используя Path = Order.OrderName и привязку к Total with Path = Total. Здесь я предполагаю, что ваше навигационное свойство от CustomerOrders к Orders называется «Order».

Смежные вопросы