Entitry Framework的延迟加载属性

时间:2017-01-30 20:02:12

标签: c# entity-framework lazy-loading

我正在寻找一种方法,只有在阅读时才能加载属性。

让我以我的用例为例:

我有几个仪表板,它目前的工作方式是控制器构建DashbaordViewModel,然后将其传递给View,然后使用部分或全部属性。

  public ActionResult Home()
    {
        return View(new DashboardModel(_db));
    }

我的仪表板视图模型如下:

public class DashboardModel
{
    private readonly DbEntities _db;

    /// <summary>
    /// Constructor
    /// </summary>     
    public DashboardModel(DbEntities db)
    {
        _db = db;
    }

    [DisplayName("Number Of Subjects")]
    public int NumberOfSubjects => _db.Subjects.Count();

    [DisplayName("Number Of Enabled Subjects")]
    public int NumberOfEnabledSubjects => _db.Subjects.Count(x => x.Enabled);
 }

然后我使用视图模型在我的Razor视图中显示这些统计数据。

然而,随着DashboardModel变得越来越大,查询变得越来越复杂,我开始意识到这是多么无效。特别是因为我通常不会在每个视图中使用所有属性。有时我将DashboardModel传递给视图,只是为了使用1或2个属性。

所以我想知道的是,当我在视图中尝试访问该属性时,如何让PC只在DB上执行LINQ查询。

如果可能有async版本更好。

0 个答案:

没有答案