EntityFramework中的代理含义是什么?

时间:2011-08-25 11:13:49

标签: c# .net entity-framework orm proxy

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

2 个答案:

答案 0 :(得分:28)

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

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

答案 1 :(得分:4)