是否可以从EF中的Sp延迟加载
本文关键字:中的 Sp 延迟加载 EF 是否 | 更新日期: 2023-09-27 17:57:33
我有一个学校班级有一个房间列表
public class School
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IList<Room> Rooms { get; set; }
}
public class Room
{
public int Id { get; set; }
public int SchoolId { get; set; }
public string Name { get; set; }
}
现在我想使用存储过程得到学校的列表和他们的房间。
我知道在代码优先模式下使用"Include"函数是可能的,而且非常简单。
这在NHibernate和MyBatis.Net Orms中是可能的。
在EF中可能吗?
您可以使用带有DbFunction的SP来获得懒惰的结果:
[DbFunction("MyContext", "GetSchools")]
public IQueryable<School> GetSchools()
{
...
现在您只需要处理查询,并且要实现IQueryable,您必须调用ToList()、First()等。此命令将发送数据库。
你也可以为Room类做同样的事情。
这里有一个例子:
https://codefirstfunctions.codeplex.com/