在导航属性上使用 Virtual
Using Virtual on navigation properties
我想知道我们何时将关键字 virtual 与导航属性一起使用(我了解到它用于延迟加载)但我正在阅读 https://docs.asp.net/en/latest/data/ef-mvc/intro.html 中创建 asp.net 网络应用程序的教程核心,他们不再使用那个虚拟了。
我检查了旧版本(MVC4,MVC5)它总是存在但不在核心中。
谁能给我解释一下为什么?
您在实体上使用虚拟属性,因此 Entity Framework 可以在运行时创建代理 class,它继承您的实体并将存根注入覆盖的属性。当您从代码访问 属性 的 getter 时,此存根会调用数据库。
Entity Framework Core 不支持延迟加载(现在,可能永远不会),因此没有理由将属性标记为虚拟。
另请参阅:Loading Related Data - Entity Framework Core 1.0.0 Documentation in the officical documentation, Lazy Loading · Issue #3797 · aspnet/EntityFramework · GitHub on GitHub and Why use 'virtual' for class properties in Entity Framework model definitions? 此处位于 Stack Overflow。
我想知道我们何时将关键字 virtual 与导航属性一起使用(我了解到它用于延迟加载)但我正在阅读 https://docs.asp.net/en/latest/data/ef-mvc/intro.html 中创建 asp.net 网络应用程序的教程核心,他们不再使用那个虚拟了。 我检查了旧版本(MVC4,MVC5)它总是存在但不在核心中。 谁能给我解释一下为什么?
您在实体上使用虚拟属性,因此 Entity Framework 可以在运行时创建代理 class,它继承您的实体并将存根注入覆盖的属性。当您从代码访问 属性 的 getter 时,此存根会调用数据库。
Entity Framework Core 不支持延迟加载(现在,可能永远不会),因此没有理由将属性标记为虚拟。
另请参阅:Loading Related Data - Entity Framework Core 1.0.0 Documentation in the officical documentation, Lazy Loading · Issue #3797 · aspnet/EntityFramework · GitHub on GitHub and Why use 'virtual' for class properties in Entity Framework model definitions? 此处位于 Stack Overflow。