Таблица ссылок Entity Framework - PullRequest
1 голос
/ 27 февраля 2011

В моей базе данных есть следующие три таблицы:

Заказать
OrderID
OrderDate
...

Пункт
ItemID
ItemName
...

ТоварыЗаказ
OrderID
ItemID
Количество ...

OrderItems - это таблица Link / Join. У меня есть страница MVC, где я хочу получить заказ и отобразить все, что было заказано. Я создаю запрос так:

var order = (from o in db.Orders.Include("OrderItems.Item")
             where o.OrderID == id
             select o).SingleOrDefault();

Теперь у меня есть модель просмотра, которая выглядит следующим образом:

public class OrderViewModel {
    public Order Order { get; set; }
    public IEnumerable<Item> Items { get; set; }
}

Как получить созданный мной запрос для извлечения элементов из коллекции OrderItems?

Редактировать
То, что я действительно хотел бы, было бы, если бы у моей модели вообще не было этой сущности. Я хотел бы, чтобы мои лица были:

Заказать
Элемент

Сущность Order будет иметь коллекцию Предметов напрямую, вместо того чтобы проходить через OrderItems, чтобы добраться до Предмета. Хотя я не уверен, возможно ли это.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

Что по этому поводу:

var order = (from o in db.Orders             
             where o.OrderID == id              
             select new OrderViewModel()                          
               {                             
                 Order = o,                             
                 Items = o.OrderItems.Select(i => i.Item)
               }).SingleOrDefault();

Вам не нужно вызывать Include, чтобы использовать свойства навигации в запросе, и поскольку вы проецируете результат, вам, скорее всего, не нужно загружать свойства навигации в Order.

0 голосов
/ 27 февраля 2011

попробуйте:

var order = (from o in db.Orders.Include("OrderItems.Item")
             where o.OrderID == id
             select new OrderViewModel()
                        {
                            Order = o,
                            Items = o.OrderItems.Item    //maybe o.OrderItems.Item.ToList()
                        } ).SingleOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...