Почему виртуальное ключевое слово используется в модели master-detail С#?


person Youngjae    schedule 24.08.2011    source источник


Ответы (1)


Они указывают почему во второй ссылке:

При использовании типов сущностей POCO отложенная загрузка достигается путем создания экземпляров производных типов прокси во время выполнения, а затем переопределения виртуальных свойств для добавления обработчика загрузки. Чтобы обеспечить отложенную загрузку связанных объектов, необходимо объявить методы получения свойств навигации общедоступными, виртуальными (переопределяемыми в Visual Basic) и незапечатанными (NotOverridable в Visual Basic). В приведенном выше коде свойства навигации Category.Products и Product.Category являются виртуальными.

Единственный недостаток, который я вижу, заключается в том, что, как и любой виртуальный метод, они будут работать немного медленнее, чем невиртуальные методы. Скорее всего, вы никогда не сможете обнаружить разницу в производительности.

Вы увидите задержку при первом доступе к этим свойствам, так как отложенная загрузка подразумевает, что первое чтение приведет к запросу БД.

person Chris Shain    schedule 24.08.2011
comment
Спасибо за Ваш ответ. Еще один вопрос, все же рекомендуется, если мне НЕ нужна POCO-поддержка или ленивая загрузка? - person Youngjae; 24.08.2011
comment
Это, конечно, не должно ничего повредить, но нет, я не думаю, что это было бы необходимо. - person Chris Shain; 24.08.2011