0

是否应该通过对单个存储库的单个调用来完全定义将传递给视图的模型。换句话说,模型是单个聚合,还是我的模型应该由单独的聚合构建,每个聚合都有自己的存储库,在服务层?

我现在拥有它的方式是,我只需调用一个存储库来填充整个模型,然后由 View 呈现。似乎聚合、存储库和模型都变成了同一个概念。

4

1 回答 1

2

我的意思是“以上都不是”。我更喜欢对视图使用表示模型,并且表示模型不需要存储库。这是由许多原因造成的:

  • 使用表示模型允许您在设计模型和数据库之前设计视图和控制器。因此,您可以及早获得用户输入。
  • 演示模型允许您将一个相当“扁平”的模型传递给视图,因此您无需担心诸如延迟加载之类的 ORM 问题。
  • 表示模型通常会简化模型绑定。
  • 使用演示模型时,您不必担心意外返回某个用户不应该看到的字段,或者意外更新不应允许用户更新的字段,因为您没有得到正确的白名单。

现在,更具体地说,遵循您的问题:您是否构建了演示模型的实例?需要多少个存储库?好吧,这个问题现在几乎可以回答了。您设计表示模型以遵循视图的要求。您按照良好的 TDD 实践设计存储库,包括识别聚合根。现在“我需要多少个存储库来实例化这个模型”的问题很简单。您检查模型所需的聚合根,并使用您需要的那些。通常,我可以在单个 LINQ 查询中执行此操作。

于 2009-03-30T13:04:54.563 回答