2011-08-25 95 views
12

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

任何帮助将有所帮助。

在此先感谢。

+1

EF并不总是创建代理。您可以关闭该功能,如果您急于加载,或者您对这些实体进行序列化(例如,在WCF中使用),则可能需要这样做。 – Kit

+0

我接受了乔纳斯提供的,但我想听到更多来自所有专家。 – saber

回答

23

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

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

+0

谢谢乔纳斯。 – saber