我已经使用EntityFramework作为我的项目中的ORM,并且在使用此技术时我没有任何问题。我听说EntityFramework创建了一个代理。我想知道这个ORM创建了什么代理?它能做什么?而且,当EF创建它时?换句话说,在ORM主题中经常使用的术语“代理”是什么意思。EntityFramework中代理的含义是什么?
任何帮助将有所帮助。
在此先感谢。
我已经使用EntityFramework作为我的项目中的ORM,并且在使用此技术时我没有任何问题。我听说EntityFramework创建了一个代理。我想知道这个ORM创建了什么代理?它能做什么?而且,当EF创建它时?换句话说,在ORM主题中经常使用的术语“代理”是什么意思。EntityFramework中代理的含义是什么?
任何帮助将有所帮助。
在此先感谢。
ORM世界中的代理是从您的域对象类型继承的自动生成的类型。代理表示尚未填充来自数据库的数据的实例,但仅知道其自己的ID。每当访问映射到数据库的属性时,代理子类将从数据库执行加载,以使加载对客户端代码透明。
代理通常在延迟加载的两个实体之间有关系属性时创建。例如。当您访问user.Address
属性时,真正返回的是地址代理对象。只有当您访问该对象的属性(例如user.Address.StreetName
)时,地址对象才会被加载。
谢谢乔纳斯。 – saber
见在本教程与代理类工作: http://www.asp.net/entity-framework/tutorials/advanced-entity-framework-scenarios-for-an-mvc-web-application
我知道在SO答案中,链接经常被忽视,但这是一个非常有用的教程。 – batpox
EF并不总是创建代理。您可以关闭该功能,如果您急于加载,或者您对这些实体进行序列化(例如,在WCF中使用),则可能需要这样做。 – Kit
我接受了乔纳斯提供的,但我想听到更多来自所有专家。 – saber