我有以下客户类别:
public class Customer
{
public long Id { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
我的数据库有客户和订单表,但没有外键关系。使用存储过程获取客户的订单,该存储过程获取客户 ID 并返回订单行。我无法修改数据库。
我知道如何从实体框架调用存储过程,但是,是否可以使用流畅的 API 配置 DbContext,以便访问客户对象的 Orders 集合将通过调用存储过程来延迟加载实体?
我正在使用最新版本的 EF。
不,你不能。延迟加载在 EF 创建的代理对象中进行编码(如果可能),无法拦截/配置代理的生成方式。
甚至不可能映射 a 的默认读取操作DbSet
到存储过程。这始终是一个询问。仅有的创建、更新和删除可以映射到存储过程 https://msdn.microsoft.com/en-us/data/dn468673.aspx.
原因(我认为)是存储过程不可组合,因此如果在复杂的 LINQ 查询中将一个实体映射到存储过程(用于读取),则不可能将查询转换为一个 SQL 语句。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)