好的,从存储库返回Viewmodel?

时间:2010-10-09 17:43:05

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

在这附近有一段时间,但这是我的第一个问题@ so。

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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