1

我试图用 1 个 SQL 存储过程执行来填充我的域模型和子实体。或许这就是这里的答案。我很确定这是不可能的,但我虽然会抛出问题以找到可能的解决方法。

我有相当复杂的域模型,我正在寻找一种更有效的方式来加载我的数据,而不是查询客户然后延迟加载其子项。我在下面给出了一个简单的例子来说明我想要达到的目标;

public class Customer{
   public int Id { get; set; }
   public virtual Address Address { get; set; }
}

public class Address{
   public int Id { get; set; }
}

var customer = this.Database.SqlQuery< Customer >("exec SP_Name")

我知道在 EF5 中您可以返回多个数据上下文,但我希望我可以解析多个子实体。

我希望我说得通。我睡眠不足,如果没有,请道歉。在落后 10 小时的时区进行一项运动会变得很困难!:(

4

1 回答 1

2

EF 中的存储过程不提供预加载。他们只能加载单级实体。您可以使用链接文章中提到的具有多个结果集的存储过程,但这仅适用于 EDMX,并且您必须执行映射函数导入而不是SqlQuery. 您还可以简单地使用带有 LINQ 查询的预加载而不是存储过程来避免延迟加载:

var customers = context.Set<Customer>()
                       .Include(c => c.Address)
                       .FirstOrDefault(c => c.Name == someName);
于 2012-10-29T08:43:43.573 回答