Использование 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 и несколько других улучшений.