博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeFirst实体类中,为什么都把ICollection<x>定义成virtual?
阅读量:4107 次
发布时间:2019-05-25

本文共 713 字,大约阅读时间需要 2 分钟。

主要是用于延迟加载,提高性能用的

只有定义成virtual后才可以延迟加载。

延迟加载,默认情况下,延迟加载被支持,如果你希望禁用它,必须显式声明,最好的位置是在 DbContext 的构造器中。

public MyDomainContext() {
this.Configuration.LazyLoadingEnabled = false; }

这样延迟加载就如你所愿了。当查询一个实体集的时候,相关的子实体也一并加载。当 EF 访问实体的子实体的时候是如何工作的呢?你的集合是 POCO 的集合,所以,在访问的时候没有事件发生,EF 通过从你定义的实体派生一个动态的对象,然后覆盖你的子实体集合访问属性来实现。这就是为什么需要标记你的子实体集合属性为 virtual 的原因。

public class Order {
public int OrderID {
get; set; } public string OrderTitle {
get; set; } public string CustomerName {
get; set; } public DateTime TransactionDate {
get; set; } public virtual List
OrderDetails {
get; set; } public virtual List
Businesses {
get; set; } }

转载地址:http://iztsi.baihongyu.com/

你可能感兴趣的文章
Step By Step(Lua模块与包)
查看>>
Step By Step(Lua环境)
查看>>
Step By Step(Lua元表与元方法)
查看>>
Step By Step(Lua数据持久化)
查看>>
Step By Step(Lua数据结构)
查看>>
Step By Step(Lua编译执行与错误)
查看>>
Step By Step(Lua迭代器和泛型for)
查看>>
Step By Step(Lua函数)
查看>>
Step By Step(Lua表达式和语句)
查看>>
Step By Step(Lua基础知识)
查看>>
Step By Step(Lua开篇)
查看>>
Step By Step(编写C函数的技巧)
查看>>
Step By Step(userdata)
查看>>
lua学习:把lua文本文件“编译”成二进制的文本
查看>>
Lua编译器
查看>>
Lua解释器
查看>>
Notepad++ 16进制编辑功能
查看>>
N沟道增强型MOS管双向低频开关电路
查看>>
VS2010点滴——不能将参数 1 从“const char [11]”转换为“LPCWSTR”
查看>>
error C2065: “CString”: 未声明的标识符
查看>>