Использование Include в Entity Framework 4 с лямбда-выражениями
Я видел много статей о том, как преодолеть этот вопрос, все связанные с CTP4, или добавление моих собственных методов расширения.
Существует ли "официальный" EF4 способ использования лямбда-выражений внутри include (как для отношений первого уровня, так и для второго и более уровня), или он в конечном итоге не был включен в RTM?
Это один - я был бы рад узнать, как это сделать, поскольку использование выражения lambda в моем коде теперь (С# system.data.entity # system.data.linq) все равно дает мне:
Невозможно преобразовать лямбда-выражение для ввода 'string', потому что это не тип делегата
on:
var customers = from c in
context.Customers.Include(c=>c.Phone)
Ответы
Ответ 1
RTM-версия Entity Framework 4.1 фактически включает в себя методы расширения в файле EntityFramework.dll
для активной загрузки lambda через функцию Include
. Просто включите DLL в свой проект, и вы должны будете писать код, например:
var princesses1 = context.Princesses.Include(p => p.Unicorns).ToList();
Не забудьте добавить оператор импорта/использования, чтобы включить пространство имен System.Data.Entity. В противном случае компилятор не сможет найти методы расширения. Например:
using System.Data.Entity;
Дополнительную информацию см. в этом блоге сообщества ADO.NET.
Ответ 2
Хотя это подразумевается в вопросе, для тех, у кого есть такая же проблема, когда они не могут использовать lambdas с .Include, убедитесь, что у вас есть это:
using System.Data.Entity;
Ответ 3
Нет официальной поддержки Include с лямбда-выражением в RTM на данный момент. Я использую this.
Когда мы говорим о CTP4, мы имеем в виду функцию Entity Framework. Это новый API, чем EF4. Это в основном включает Code First и несколько других улучшений.
Ответ 4
Хорошая статья об лямбда-выражениях в методе include