WCF + Entity Framework CodeFirst = исключение DynamicProxies?

Я пробую EF CodeFirst CTP 5 и использую его со службами данных WCF. Я получаю сообщение об ошибке Internal Server Error. The type 'System.Data.Entity.DynamicProxies.Person_C321D7A37002A1B42C3CBAECC27983D77F6B7FCC3F837175B2CBB55CCA66AF55' is not a complex type or an entity type.

Если я использую человека, сгенерированного edmx, из базы данных, созданной CF, у меня нет проблем. При чтении кажется, что ленивая загрузка все портит, и предыдущие версии EF позволили мне отключить создание прокси с помощью флага параметра, которого нет в DbContext. Существует способ настроить LazyLoading на false, но это, по-видимому, не отключает генерацию прокси.

Спасибо.


person Paul    schedule 23.02.2011    source источник
comment
Вы не можете загрузить отношения сущностей.   -  person Chen Kinnrot    schedule 23.02.2011
comment
Нет, я вообще не хочу, чтобы он загружал их, так как это канал OData, и он все равно просто отбрасывает ссылки на другие сущности. Я уже установил LazyLoadingEnabled = false, так что вопрос не в том, когда вещи загружаются.   -  person Paul    schedule 23.02.2011


Ответы (3)


Вот что вы можете сделать в коде EF сначала CTP5:

((IObjectContextAdapter)context).ObjectContext.ContextOptions.ProxyCreationEnabled = false;

Кроме того, это ошибка в службах данных WCF в VS 2010 RTM. Вы можете использовать CTP1 WCF Data Services с эта проблема исправлена.

Надеюсь, это поможет.
Спасибо
Pratik

person Pratik    schedule 25.02.2011
comment
Просто для протокола: установка CTP1 не решила проблему, но решение с приведением к IObjectContextAdapter помогло, спасибо. - person Paul; 26.02.2011

В CTP1 двоичные файлы были переименованы в Microsoft.Data.Services.*.dll. Вы меняли ссылки на новые сборки? Я почти уверен, что эта проблема была исправлена ​​в CTP1. Так что просто хотел убедиться, что это работает для вас.

Спасибо, Пратик.

person Pratik    schedule 28.02.2011

Если вы используете новый класс DbContext, вы можете использовать

Configuration.ProxyCreation = false

Чтобы отключить динамическое создание прокси

person AlanFoster    schedule 14.10.2013