是否可以从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中可能吗?

是否可以从EF中的Sp延迟加载

您可以使用带有DbFunction的SP来获得懒惰的结果:

[DbFunction("MyContext", "GetSchools")]
public IQueryable<School> GetSchools()
{
  ...

现在您只需要处理查询,并且要实现IQueryable,您必须调用ToList()、First()等。此命令将发送数据库。

你也可以为Room类做同样的事情。

这里有一个例子:

https://codefirstfunctions.codeplex.com/