Asp.net mvc 执行CQR时查看模型位置

Asp.net mvc 执行CQR时查看模型位置,asp.net-mvc,viewmodel,dto,cqrs,3-tier,Asp.net Mvc,Viewmodel,Dto,Cqrs,3 Tier,假设您有一个分为表示层、业务层和数据访问层的分层项目。如果您使用的是CQR,那么您将直接从数据访问层查询到表示层,并绕过业务层 在这种情况下,如果在表示层中使用ViewModels,则数据访问层将需要引用表示层以返回表示层中ViewModels的数据。这不是反模式吗 这里也有一个类似的问题: 但是,如果您正在进行CQR,您将不会像回答中提到的那样在ViewModel和域对象之间进行映射,因为您绕过了域/业务层,那么您应该将ViewModels放置在哪里?据我所知,CQR将从查询端(又称DataA

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

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

这里也有一个类似的问题:


但是,如果您正在进行CQR,您将不会像回答中提到的那样在ViewModel和域对象之间进行映射,因为您绕过了域/业务层,那么您应该将ViewModels放置在哪里?

据我所知,CQR将从查询端(又称DataAccessLayer)获取DTO(DataTransferObjects)它被传递到UI(PresentationLayer)

这些DTO可以直接用作视图的视图模型,如果它们提供了视图的所有必要数据,可以与视图模型中的其他DTO聚合。我认为这取决于视图中提供的数据


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

我对CQRS非常陌生,但我想说的是,所有命令和查询都应该从模型中调用,不是吗?是的,层确实可以被视为反模式。CQR可以帮助去除分层,也就是千层面软件(与意大利面条软件相反)。请看一些可选概念,例如六边形体系结构或端口和适配器模式。@SteveB,请参阅