Частный конструктор на объекте POCO, предотвращающий ленивую загрузку - PullRequest
6 голосов
/ 28 марта 2012

У меня есть объект POCO, для которого я определил пользовательский конструктор.Я также реализовал конструктор по умолчанию, так что Entity Framework может успешно увлажнять объект, когда я запрашиваю копию из базы данных.

Кажется, это работает хорошо, но когда я устанавливаю конструктор по умолчанию как частный (чтобы заставить мой кодиспользовать пользовательскую версию) и запросить сущность из базы данных, я не могу перемещаться по связанным сущностям, поскольку все они нулевые.

Кажется, что это проблема с отложенной загрузкой, поэтому я мог быизменить мой репозиторий, чтобы загружать связанные объекты, которые мне нужны, но мне интересно, есть ли лучший способ скрыть конструктор по умолчанию от клиентского кода, в то же время позволяя Entity Framework выполнять отложенную загрузку?

1 Ответ

12 голосов
/ 28 марта 2012

Если вы определяете закрытый конструктор, вы нарушаете требования для создания прокси-сервера POCO, отвечающего за отложенную загрузку:

Пользовательский класс данных должен иметь открытый или защищенный конструктор, который не имеетпараметры.

Так что лучший вариант для вас - использовать защищенный конструктор или не использовать отложенную загрузку.

...