【问题标题】:How to use lazy loading with view models如何在视图模型中使用延迟加载
【发布时间】:2022-03-13 08:08:03
【问题描述】:

我正在创建一个 MVC ASP.Net 应用程序,并且我需要在表中显示大量数据,但是,并非所有数据都在我的数据库的一个表中。因此,我创建了一个视图模型来获取所有必要的数据并将其放在一个位置以供我查看。直到最近我开始获取大量数据时,这一直很有效。现在将所有数据从模型移动到视图模型的过程需要很长时间。传统上我会使用延迟加载来减少这个时间,但我不确定如何使用视图模型来做到这一点。这甚至可能吗?

如果您想要任何代码,请告诉我,但我不确定现在需要什么代码。

【问题讨论】:

  • 看看this
  • @Shyju 对您的链接做出了很好的回应。我投了赞成票。至于从视图模型中延迟加载,您不必做任何超出正常范围的事情。只需确保您的导航属性是虚拟的,并确保在您的配置类中启用延迟加载(默认情况下已启用)。
  • 那篇文章解释了延迟执行的工作原理以及它如何影响性能(当您拥有来自其他表的导航属性时)以及解决该问题的解决方案(使用 dtos 和投影)

标签: c# asp.net-mvc lazy-loading asp.net-mvc-viewmodel


【解决方案1】:

从发布的其他答案看来,解决方案似乎适用于您的数据库:

  var.Resource.Include(s=>s.someResource);

Include() 应用预加载。急切加载是对一种实体类型的查询也加载相关实体作为查询的一部分的过程。这将加快速度,因此您不会提出很多请求。

【讨论】:

    【解决方案2】:

    把它放在你的 DBContext 类中并安装 microsoft.proxis 包:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseLazyLoadingProxies().UseSqlServer("Data Source=.;Initial Catalog=Da2;Integrated Security=True");
            }
    

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    相关资源
    最近更新 更多