1

假设您有一个分层项目,分为表示层、业务层和数据访问层。如果您使用 CQRS,您将直接从数据访问层到表示层进行查询并绕过业务层。

在这种情况下,如果您在表示层中使用 ViewModel,那么您的数据访问层将需要引用表示层以根据表示层中的 ViewModel 返回数据。那不是反模式吗?

此处存在类似的问题 - MVC 3 应用程序中的模型、视图模型、DTO

但是,如果您正在执行 CQRS,您将不会像答案中提到的那样在您的 ViewModel 和 Domain 对象之间进行映射,因为您正在绕过您的 Domain/Business 层那么您应该将 ViewModels 放在哪里?

4

1 回答 1

2

据我了解 CQRS,您将从传递给 UI(PresentationLayer)的查询端(又名 DataAccessLayer)获得 DTO(DataTransferObjects)。

这些 DTO 可以直接用作 Views 的 ViewModel,如果它们为 View 提供所有必要的数据,或者可以与 ViewModel 中的其他 DTO 聚合。我认为这取决于视图中显示的数据。

回答您的问题:ViewModel 是 PresentationLayer 的一部分。

于 2012-07-13T07:50:44.443 回答