C# EntityFramework中的代理是什么意思?

C# EntityFramework中的代理是什么意思?,c#,.net,entity-framework,orm,proxy,C#,.net,Entity Framework,Orm,Proxy,我在我的项目中使用了EntityFramework作为ORM,在使用这项技术时没有任何问题。我听说EntityFramework创建了一个代理。我想知道这个ORM创建了什么代理?它是干什么的?那么,EF什么时候创建它呢?换句话说,ORM主题中经常使用的术语“代理”的含义是什么。ORM世界中的代理是从域对象类型继承的自动生成类型。代理表示尚未使用数据库中的数据填充的实例,但只知道其自己的ID。每当访问映射到数据库的属性时,代理子类将从数据库执行加载,以便加载对客户端代码透明 代理通常在两个实体之间

我在我的项目中使用了EntityFramework作为ORM,在使用这项技术时没有任何问题。我听说EntityFramework创建了一个代理。我想知道这个ORM创建了什么代理?它是干什么的?那么,EF什么时候创建它呢?换句话说,ORM主题中经常使用的术语“代理”的含义是什么。

ORM世界中的代理是从域对象类型继承的自动生成类型。代理表示尚未使用数据库中的数据填充的实例,但只知道其自己的ID。每当访问映射到数据库的属性时,代理子类将从数据库执行加载,以便加载对客户端代码透明


代理通常在两个实体之间具有延迟加载的关系属性时创建。例如,当您访问
user.Address
属性时,实际返回的是地址代理对象。只有访问该对象的属性(例如,
user.Address.StreetName
)后,才会加载地址对象本身。

请参阅本教程中的使用代理类:

EF并不总是创建代理。您可以关闭该选项,如果您渴望加载,或者如果您序列化实体(例如,用于WCF),则可能需要关闭该选项。我接受Jonas提供的选项,但我想从所有专家那里听到更多信息。我知道,在SO答案中,链接通常不受欢迎,但这是一个非常有用的教程。正确,有用的链接。这里还有一个: