我在项目中使用 EntityFramework 作为ORM,我在使用此技术时没有任何问题。我听说EntityFramework创建了一个代理。我想知道这个ORM创建的代理是什么?它能做什么?并且,当EF创建它?换句话说,在ORM主题中经常使用的术语“代理”的含义是什么。
答案 0 :(得分:28)
ORM世界中的代理是一种自动生成的类型,它继承自您的域对象类型。代理表示尚未填充数据库中的数据的实例,但只知道自己的ID。每当访问映射到数据库的属性时,代理子类将从数据库执行加载,以便加载对客户端代码是透明的。
当您在两个延迟加载的实体之间存在关系属性时,通常会创建代理。例如。当您访问user.Address
属性时,实际返回的是地址代理对象。只有在您访问该对象的属性(例如user.Address.StreetName
)后,才会加载正确的地址对象。
答案 1 :(得分:4)