Entity Framework - PullRequest
       5

Entity Framework

0 голосов
/ 18 сентября 2010

Привет, у меня есть Entity Model, скажем, 3 сущности похожи, так что все они связаны, конечно:

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

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

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

И я хочу отображать заказы некоторых клиентов в GridView, например:

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

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

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

1 Ответ

2 голосов
/ 18 сентября 2010

Я предполагаю, что вы определили три объекта с навигационными свойствами, связывающими Customers с 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.Если у вас есть только имя, а не идентификатор, вы могли бы сделать что-то вроде:

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 to Customer называется «Customer».«Включить» обеспечивает загрузку соответствующих заказов.Если он не включен, вызов ToList будет предполагать, что вам не нужны ордера, и вы не сможете ссылаться на них в своем GridView.

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

...