Stored procedures 来自实体框架SP的即时加载

Stored procedures 来自实体框架SP的即时加载,stored-procedures,entity-framework-5,Stored Procedures,Entity Framework 5,我试图用1个SQL存储过程执行来填充我的域模型和子实体。也许这是答案。我很确定这是不可能的,但我想我会把这个问题抛到一边,寻找可能的解决办法 我有相当复杂的领域模型,我正在寻找一种更有效的方法来加载我的数据,而不是查询一个客户,然后懒洋洋地加载它的子对象。下面我举了一个简单的例子来说明我想要实现的目标 public class Customer{ public int Id { get; set; } public virtual Address Address { get; set

我试图用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(“exec SP_Name”)

我知道在EF5你可以回来,但我希望我能解决多个孩子的实体


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

EF中的存储过程不提供即时加载。它们只能加载单个级别的实体。您可以将存储过程与链接文章中提到的多个结果集一起使用,但只能与EDMX一起使用,并且必须执行映射函数导入,而不是
SqlQuery
。您也可以简单地将即时加载与L一起使用INQ查询而不是存储过程以避免延迟加载:

var customers = context.Set<Customer>()
                       .Include(c => c.Address)
                       .FirstOrDefault(c => c.Name == someName);
var customers=context.Set()
.包括(c=>c.地址)
.FirstOrDefault(c=>c.Name==someName);

谢谢ladislav,我也这么认为!但是我希望由于EF5支持多个结果集,我们已经完成了一半,可能已经找到解决此问题的方法了?我的查询很复杂,因此使用LINQ无法真正实现,因为为执行查询而生成的SQL太慢,无法执行。