Я видел много статей о том, как решить эту проблему, все они связаны с CTP4 или добавлением моих собственных методов расширения.
Существует ли «официальный» способ использования лямбда-выражений внутри include (как для отношений первого уровня, так и для 2-го и более уровней), включенный в EF4, или он в конечном итоге не был включен в RTM?
Он есть - я был бы рад узнать, как это сделать, поскольку использование лямбда-выражения в моем коде сейчас (с # system.data.entity # system.data.linq) все еще дает мне:
Невозможно преобразовать лямбда-выражение в тип 'string', потому что это не тип делегата для:
var customers = from c in
context.Customers.Include(c=>c.Phone)
Ответы:
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 для получения дополнительной информации.
источник
Хотя это подразумевается в вопросе, для всех, у кого такая же проблема, когда они не могут использовать лямбды с .Include, убедитесь, что у вас есть это:
using System.Data.Entity;
источник
Нет, на данный момент официальная поддержка Include с лямбда-выражением в RTM отсутствует. Я использую это .
Когда мы говорим о CTP4, мы имеем в виду Entity Framework Feature. Это более новый API, чем EF4. В основном он включает Code First и несколько других улучшений.
источник