Entity Framework Proxy создание - PullRequest
16 голосов
/ 01 июня 2011

Мы можем остановить создание прокси в конструкторе контекста, используя

this.Configuration.ProxyCreationEnabled = false;

Каковы преимущества и недостатки создания прокси в EF 4.1?

Ответы [ 2 ]

17 голосов
/ 01 июня 2011

Прокси необходимы для двух функций:

  • Ленивая загрузка - свойства навигации загружаются при первом доступе
  • Динамическое отслеживание изменений - если вы изменяете какое-либо свойство в объекте, контекст уведомляется об этом изменении и задает состояние объекта. Если динамическое отслеживание изменений не используется, контекст должен использовать отслеживание изменений моментального снимка, что означает обнаружение всех изменений перед сохранением = исследование всех свойств, даже если они не были изменены.

Оба эти метода имеют другие требования:

  • Ленивая загрузка - все свойства навигации в сущности должны быть virtual. Ленивая загрузка должна быть включена.
  • Динамическое отслеживание изменений - все сопоставленные свойства должны быть virtual.
2 голосов
/ 29 июля 2011

В дополнение к предыдущему ответу, среда выполнения использует ваш класс POCO, используя отражение, и создает класс Dynamic Proxy, унаследовавший ваш класс POCO.Таким образом, он добавит эти функциональные возможности + функциональные возможности EntityObject во время выполнения, которые помогут динамическим прокси-серверам включить отложенную загрузку и динамическое отслеживание изменений.

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