powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
9 сообщений из 9, страница 1 из 1
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390339
Northrop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    public class OrderDetail
    {
        public Guid ObjectID { get; set; }
        public DateTime Created { get; set; }
        public string Comments { get; set; }
    }

     public class Order
    {
        public Guid ObjectID{ get; set; }
        public  Order PrevOrder { get; set; }
        public List<OrderDetail> OrderDetails { get; set; }
    }



Надо вернуть одним запросом все заказы и 3 последних детали к каждому(они точно есть). Пишу так:
Код: c#
1.
var e1 = ctx.Orders.Include(e => e.OrderDetails .OrderByDescending(c => c.Created).Take(3)).ToList();



А мне в ответ:

The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.

ЧЯДНТ?
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390466
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в сообщении об ошибке вполне внятно все написано.
Include предполагает ссылку на навигационное свойство и не более того, а вы туда пихаете целое выражение.

Нужно понимать, что EF попытается преобразовать ваше выражение в единственный SQL-запрос, как вы его себе в данном случае представляете?
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390487
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Northrop
ЧЯДНТ?

Вообще ВСЁ.
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390492
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class OrderDetail
    {
        public Guid OrderDetailID { get; set; }
        public Guid orderID { get; set; }
        public virtual Order order { get; set; }
        public DateTime Created { get; set; }
        public string Comments { get; set; }
    }

     public class Order
    {
        public Guid orderID{ get; set; }
        public virtual ICollection<OrderDetail> OrderDetails { get; set; }
    }



Ты б почитал чего, для начала.
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390589
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Northrop,

Так делать нельзя. Include с фильтром, сортировкой, подвыборками и прочим не работает.
Либо всё, либо ничего.

Переходи на проекции.
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390715
Northrop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

И как мне на проекциях такое изобразить тогда?
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390716
Northrop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если что, очень хочется избежать создания на ровном месте еще одного анонимного типа через select new. Да и вообще нового типа, хоть именованного хоть как.
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390736
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NorthrophVostt,

И как мне на проекциях такое изобразить тогда?

NorthropЕсли что, очень хочется избежать создания на ровном месте еще одного анонимного типа через select new. Да и вообще нового типа, хоть именованного хоть как.

Избежать этого в EF не получится. Либо анонимный, либо новый тип для извлечения проекции.
...
Рейтинг: 0 / 0
Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
    #39390966
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NorthropЕсли что, очень хочется избежать создания на ровном месте еще одного анонимного типа через select new. Да и вообще нового типа, хоть именованного хоть как.

Чем тебе не угодил анонимный тип?

Код: c#
1.
var result = details.GroupBy(x => new { ord = x.order }).Select(x => new { order = x.Key.ord, threeD = x.OrderByDescending(z => z.Created).Take(3)});



Можешь обойтись и без него - но код увеличится изрядно - нужно будет "налету" создавать order, инитить его свойства, равно как и три последние детали.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Надо выбрать основную сущность и некоторые из дочерних в EF - как это сделать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]