2

Я хочу знать, когда мы используем ключевое слово virtual с навигационными свойствами (я узнал, что это для ленивой загрузки), но я читаю учебник в https://docs.asp.net/en/latest/data/ef-mvc/intro.html, который создает ядро ​​веб-приложения asp.net, и они больше не используют эту виртуальную машину. Я проверил старые версии (MVC4, MVC5), он всегда присутствует, но не в ядре. Может кто-нибудь объяснить мне, почему? Спасибо заранее.Использование Virtual on navigation properties

ответ

2

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

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

См. Также: Loading Related Data - Entity Framework Core 1.0.0 Documentation в официальной документации, Lazy Loading · Issue #3797 · aspnet/EntityFramework · GitHub на GitHub и Why use 'virtual' for class properties in Entity Framework model definitions? здесь, на переполнение стека.

+1

'вероятно никогда не будет' - Почему? У вас есть источники? – Maarten

+1

@Maarten [дорожная карта упоминает об этом] (https://github.com/aspnet/EntityFramework/wiki/Roadmap), но Роуэн Миллер (и другие, IIRC) упомянули, что они [_ «все еще не определились ...» _ об этом] (https://github.com/aspnet/EntityFramework/issues/3797#issuecomment-158479567). Это не окончательный «нет», но не уверен, что он будет реализован. – CodeCaster