У меня возникла проблема: у меня есть таблица со ссылкой на другую таблицу, которая имеет список ссылок на другую таблицу, в которой есть другой список ссылок, и я захотите загрузить все это.Entity Framework с нетерпением загружает список сущностей в список сущностей
В принципе, идея:
public class User {
public ClassL1 l1 { get; set; }
}
ClassL1 {
public List<ClassL2> l2 { get; set; }
}
ClassL2 {
public List<ClassL3> l3 { get; set; }
}
ClassL3 {
//some basic string or int values
}
И в настоящее время, я стараюсь, чтобы загрузить его с чем-то вроде этого, но безрезультатно:
user = context.Users
.Where(u => u.UserName == model.Username)
.Include(u => u.l1)
.ThenInclude(l1 => l1.l2)
.ThenInclude(l2List => l2List.Select(l2Single => l2Single.l3))//This doesn't work
//.Include(u => u.l1.l2.Select(l2Single => l2Single.l3)) //Neither does this
.First();
Как я должен загрузить список списков, если выбор не работает? Любая помощь будет оценена по достоинству.
EDIT: Ну, так как, видимо, открытая ошибка на этом, я пошел с глупой исправить, и сделал это работает так:
user = context.Users
.Where(u => u.UserName == model.Username)
.Include(u => u.l1)
.ThenInclude(l1 => l1.l2)
.First();
for (int i = 0; i < user.l1.l2.Count; i++)
{
user.l1.l2[i].l3 = context.l3DB
.Where(p => p.l2.Id == user.l1.l2[i].Id)
.ToList();
}
И для этой работы, я добавил ссылки на (родителям) внутри классов. , например:
public class ClassL2 {
public List<ClassL3> l3 { get; set; }
public ClassL1 l1 { get; set; }//reference to parent
}
Кажется, не работает. Я получаю сообщение об ошибке: «Оператор принуждения не определен между типами« Microsoft.Data.Entity.Query.Internal.EntityQueryable'1 [ClassL3] »и« System.Collections.Generic.List'1 [ClassL3] ». –
Возможно, это проблема с вашими сопоставлениями. Какую версию EF вы используете? –
«EntityFramework.Commands»: «7.0.0-rc1-final» «EntityFramework.Core»: «7.0.0-rc1-final» Я тоже так думал, но я не могу найти способ его исправить , имел одну пропуску, названную так же, как и имя класса, изменил ее, но ошибка сохранилась. Я мог бы загрузить фрагменты кода, касающиеся этой проблемы, если это поможет. –