Stored procedures 来自实体框架SP的即时加载
我试图用1个SQL存储过程执行来填充我的域模型和子实体。也许这是答案。我很确定这是不可能的,但我想我会把这个问题抛到一边,寻找可能的解决办法 我有相当复杂的领域模型,我正在寻找一种更有效的方法来加载我的数据,而不是查询一个客户,然后懒洋洋地加载它的子对象。下面我举了一个简单的例子来说明我想要实现的目标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
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我希望我讲得通。我睡眠不足,如果没有,我道歉。在时区落后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太慢,无法执行。