【问题标题】:Business model property's lazy loading with ASP.NET Core使用 ASP.NET Core 的业务模型属性延迟加载
【发布时间】:2023-03-03 00:09:01
【问题描述】:

我想在我的业务模型中的某些属性上实现延迟加载。 使用 ASP.NET Core 的最佳方法是什么?将数据库上下文注入我的模型并在使用属性时对其进行查询?或者在我的模型上实现像 void LazyLoadProperty(string propertyName, ApplicationDbContext dbContext) 这样的通用方法,并在每次需要延迟加载值时注入数据库上下文?

关于我使用 .NETCoreApp1.1Entity Framework Core 的信息。

【问题讨论】:

  • 为什么还要在网络应用中延迟加载?
  • 因为有些属性需要复杂的查询和多个join来获取值,这个值我很少需要,所以我想只在需要的时候加载它们
  • docs.microsoft.com/en-us/ef/core/querying/related-data 在那里你会发现一个关于延迟加载的简介——EFC 还不可能......它在积压中

标签: asp.net-core-mvc lazy-loading asp.net-core-1.1


【解决方案1】:

在为我的业务模型进行数据延迟加载时,我使用的方法是让业务模型了解数据库上下文,然后在访问属性时让属性延迟加载数据(如果该属性的数据尚未访问)还没有被懒加载。我发现这个方法效果很好。

【讨论】:

  • 所以您的业务模型知道您的数据库上下文,不是吗?您如何将数据库上下文传递给您的业务模型?由构造函数?
  • 虽然我是选择性单元测试的粉丝,但我对如何分配我的开发工作非常务实。所以在我的例子中,我明确地将对数据库上下文的访问编码到业务模型中。通过构造函数传入它是另一种选择,并且经常受到将业务模型注册到依赖注入容器中的开发人员的青睐,我不想这样做。
猜你喜欢
  • 2014-04-12
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2013-08-01
  • 2017-12-28
  • 2013-07-03
相关资源
最近更新 更多