Использование Включить в Entity Framework 4 с лямбда-выражениями - PullRequest
85 голосов
/ 28 декабря 2010

Я видел много статей о том, как преодолеть этот вопрос, все они связаны с CTP4, или как добавить свои собственные методы расширения.

Есть ли "официальный" EF4-включенный способ использования лямбда-выражений внутри include (как для отношений первого уровня, так и для второго и более уровней), или он в конечном итоге не был включен в RTM?

Это есть один - я был бы рад узнать, как это сделать, поскольку использование лямбда-выражения в моем коде сейчас (с # system.data.entity # system.data.linq) все еще дает мне:

Невозможно преобразовать лямбда-выражение в тип 'string', поскольку оно не является типом делегата. на:

var customers = from c in
context.Customers.Include(c=>c.Phone)

Ответы [ 3 ]

213 голосов
/ 19 апреля 2011

RTM-версия Entity Framework 4.1 фактически включает методы расширения в файле EntityFramework.dll для быстрой загрузки с помощью лямбды через функцию Include. Просто включите DLL в ваш проект, и вы сможете написать код вроде:

var princesses1 = context.Princesses.Include(p => p.Unicorns).ToList();

Не забудьте добавить оператор Import / Using для включения пространства имен System.Data.Entity . В противном случае компилятор не сможет найти методы расширения. Например:

using System.Data.Entity;

Дополнительную информацию см. В этой статье Блог команды ADO.NET .

86 голосов
/ 10 апреля 2012

Хотя это подразумевается в вопросе, для тех, у кого есть такая же проблема, когда они не могут использовать лямбды с .Include, убедитесь, что у вас есть это:

using System.Data.Entity;
5 голосов
/ 28 декабря 2010

Нет, в настоящее время нет официальной поддержки включения с лямбда-выражением в RTM. Я использую это .

Когда мы говорим о CTP4, мы имеем в виду Entity Framework Feature. Это более новый API, чем EF4. В основном это Code First и несколько других улучшений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...