Ответ 1
В среде выполнения Entity Framework создаст для вас то, что называется прокси-сущностями. Эти объекты являются объектами динамически создаваемых типов , которые происходят из типов сущностей.
Это позволяет использовать ваши объекты как POCO, который является простым объектом, который никак не связан с Entity Framework, поскольку он не наследует от EntityObject
.
Во время выполнения динамически созданный тип сущности наследуется от вашего POCO и переопределяет все ваши виртуальные свойства, чтобы добавить материал Entity Framework, который позволяет ленивую загрузку в свойствах getters.
Lazy loading - сложный процесс, который требует, чтобы ваш код знал о том, как данные поступают из базы данных. Поскольку вы не хотите, чтобы ваши классы домена знали о базе данных и материалах EF, вы абстрагируете свои сущности из EF и добавляете виртуальные свойства, поэтому EF может переопределить вашу базовую POCO и добавить ее связанные с DB вещи во время выполнения.
То же самое для отслеживать изменение.