1

在这里呆了一段时间,但这是我的第一个问题@所以。确定要从存储库返回Viewmodel?

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

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

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

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

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

+0

不清楚你实际要问什么。你提到网页,这是一个网站吗? MVC? (没有标签)。 – Nik 2010-10-09 18:06:53

+0

是的MVC网站,但问题是关于什么可以/应该从存储库模式返回。作为问题标题状态 - 是否可以从存储库返回视图模型? – Simon 2010-10-09 19:04:40

回答

1

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

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

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

+0

是的,就我而言也是如此。我会接受这个答案,谢谢。 – Simon 2010-10-11 15:58:43