【问题标题】:Ok to return a Viewmodel from repository?可以从存储库返回 Viewmodel 吗?
【发布时间】:2010-10-09 17:43:04
【问题描述】:

在这里待了一段时间,但这是我的第一个问题@so。

场景: Mvc 网站。大多数页面的视图模型。 每个视图模型都包含从不同存储库获取的模型或 iqueryables。

每个源都经常更新(从站点的独家新闻之外),所以即使在本地缓存也会有很多数据源锤击。

我们面临的问题是,当使用多个存储库创建视图模型时,每个存储库都会触发到数据源的连接/获取(如果它们需要重新填充)。

这可以通过从存储库返回完整的视图模型来轻松避免。然后存储库可以使用单个连接(在大多数情况下即使只有一个 sql 存储过程)来获取所有需要的数据。

有人提到视图模型不应该包含在存储库中。我实际上没有看到任何问题,所以我的问题是可能会产生什么影响?

【问题讨论】:

  • 不清楚你到底在问什么。你提到页面,这是一个网站吗? MVC? (两者都没有标签)。
  • 是的 mvc 站点,但问题是关于可以/应该从存储库模式返回什么。如问题标题所述 - 从存储库返回视图模型是否可以?

标签: .net model-view-controller stored-procedures repository-pattern viewmodel


【解决方案1】:

对于 MVC,没有硬性规定 - 您应该始终根据您的特定场景做任何适合的事情。从存储库层返回完整的视图模型是不常见的,但如果填充它是一组特别密集的数据库操作,可以简化为单个存储过程,那为什么不呢。

检索视图数据的方法总是有可能重复您在其他地方拥有的代码,因此与 DRY 相矛盾,从而导致以后出现潜在的维护问题。

如果您发现检索单个页面所需的所有数据需要多次调用多个不同的存储库,这表明您的存储库可能没有充分建模以满足您的要求,这可能是一个更好的地方来减少数据库连接/获取的数量。

【讨论】:

  • 是的,就我来的时候差不多。我会接受这个答案,谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 2010-12-10
  • 2017-12-26
相关资源
最近更新 更多