我有下面这段代码,用于从客户表中检索数据
var customers= context.CustomerEntities.Include("Addresses").Select(Mapper.Map).ToList();
映射函数将实体对象映射到业务对象,具体如下:
internal static Customer Map(CustomerEntity entity)
{
if (entity == null)
return null;
return new Customer
{
Id = entity.Id,
Name = entity.Name,
Addresses = Map(entity.Addresses)
};
}
现在,上面的代码可以正常运行。
然而,当我尝试这样做时:
var customers= context.CustomerEntities.Select(Mapper.Map).ToList();
执行Mapper函数时出现错误信息:此 Command 已经与打开的 DataReader 相关联,必须先关闭它
。
现在我知道要解决这个问题,我必须在连接字符串中设置multipleactiveresultsets=True
。我已经尝试过,并且成功地解决了我的问题。
然而,当我运行 SQL 仿真器时,自动从实体框架查询所有客户也检索了所有地址,即使我并不需要它们。
除了必须设置multipleactiveresultsets=True
以外,是否有其他解决方法? 我不想一直懒加载地址。