Я пытаюсь определить, делаю ли я что-то не так, или Entity Framework просто не предназначен для этого. Я хочу выполнить запрос в стиле LINQ для заполнения объекта, включая списки дочерних элементов. В Linq2SQL это допустимо и преобразуется в эффективный SQL-запрос, результаты которого заполняют новый список.
class ReportItem
{
string Manager; /* ... */
List<string> Employees; /* ... */
}
var report = (from manager in entities.Managers
select new ReportItem()
{
Manager = manager.Name,
Employees = manager.Employees.Select(e => e.Name).ToList()
}).ToList();
В Entity Framework строка Employees приведет к ошибке method cannot be translated into a store expression
- Entity Framework, похоже, не нравится конструировать не-сущностные классы внутри оператора LINQ, даже если она не использует никакой логики на стороне базы данных.
Я понимаю, что для отслеживания изменений используются классы сущностей, но нельзя ли прочитать информацию в произвольные классы? Я не хочу создавать сущности и представления базы данных для каждого возможного сценария чтения, и я не хочу отправлять половину базы данных через канал (целые сущности Employee или Manager) просто для считывания чего-то вроде свойства name.
Можно ли выполнить этот «ленивый, но эффективный» запрос с помощью Entity Framework или Entity Framework просто не создан с учетом этого? Я уже сталкивался с рядом проблем, связанных с преобразованием проекта из Linq2SQL в Entity Framework, и это действительно может привести к гибели.