c# - 为什么在 C# 主从模型中使用 virtual 关键字?

标签 c# model virtual keyword master-detail

请参阅 EntityFramework 文章和 Microsoft 的其他 ASP MVC 网络研讨会,例如;

1:http://www.asp.net/mvc/videos/5-minute-introduction-to-aspnet-mvc

2:http://blogs.msdn.com/b/adonet/archive/2011/03/08/ef-feature-ctp5-code-first-model-with-master-detail-wpf-application.aspx

他们使用 virtual 关键字在主模型和细节模型之间进行引用。

您能否解释一下 (1) 为什么他们使用 virtual 关键字以及 (2) 没有关键字会出现什么缺点?

问候

最佳答案

他们在您的第二个链接中指定了原因:

When using POCO entity types, lazy loading is achieved by creating instances of derived proxy types during runtime and then overriding virtual properties to add the loading hook. To get lazy loading of related objects, you must declare navigation property getters as public, virtual (Overridable in Visual Basic), and not sealed (NotOverridable in Visual Basic). In the code above, the Category.Products and Product.Category navigation properties are virtual.

我能看到的唯一缺点是,与任何虚拟方法一样,它们的执行速度比非虚拟方法稍慢。您很可能永远无法检测到性能差异。

您会在第一次访问这些属性时看到延迟,因为延迟加载意味着第一次读取将导致数据库查询。

关于c# - 为什么在 C# 主从模型中使用 virtual 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169980/

相关文章:

c# - 使用 [Authorize(Roles = "Edit")] 时出现 sql 错误

go - 未加载时如何忽略JSON输出中的关联字段?

virtual - 在KVM中如何将VM克隆到具有不同磁盘空间的VM

c++ - 如何指示编译器为虚函数生成别名?

c# - 使用 C# 使用 XmlDocument 在根节点中获取架构位置

c# - NServiceBus 延迟消息处理

c# - Xamarin for Android 中的 RestSharp 没有给出任何响应

django - 如何在 Django 管理页面中显示外键的属性

python - Odoo:检查是否安装了模块

c++ - 指向虚拟成员函数的指针。它是如何工作的?