разделение EF-объектов;отключить создание прокси и ленивую загрузку? - PullRequest
5 голосов
/ 03 ноября 2011

У меня были некоторые проблемы с циклическими ссылками при преобразовании EF-сущностей в json-объекты. Я нашел решение, которое работает для меня, но я хотел бы знать, что на самом деле происходит, когда я добавляю

 context.ContextOptions.ProxyCreationEnabled = false;

и / или

context.ContextOptions.LazyLoadingEnabled = false;

Первого достаточно, чтобы получить одномерный объект json. Должен ли я использовать оба? И что они на самом деле делают? Есть ли более разумный способ обойти это? Спасибо

1 Ответ

6 голосов
/ 03 ноября 2011

Первая строка отключает генерацию класса во время выполнения, который наследуется от вашего класса сущностей. Этот класс действительно используется во время выполнения. Не твой класс. Этот сгенерированный во время выполнения класс, вероятно, не Serializable, и именно поэтому эта строка (отключение генерации прокси) делает сериализацию работающей.

Вторая строка отключает отложенную загрузку. Допустим, у вас есть родительский объект и дочерний объект. Когда вы запрашиваете Parent, вы не загружаете Children, когда включена отложенная загрузка. Когда он выключен, когда вы загружаете Parent, вы загружаете все его дочерние элементы. Я думаю, это то, с чем вам следует ознакомиться, если вы используете EF.

Edit: Если есть проблема с циклическим заданием, вам следует отключить отложенную загрузку. Затем, когда вы сериализуете Parent, вы не будете пытаться сериализовать дочерние элементы, имеющие ссылку на Parent (создание циклической ссылки)

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