我必须使用 CartLine 和其他一些信息创建一个复杂的“读取模型”(购物车)。目前我有一个基于许多其他对象(Cart、Operation...)的 ViewModel,构建此对象的逻辑在 Respository 和 Controller(不在 Aggregate 中)中调度,我想重构这段代码,使用存储库直接返回“读取模型”(带有格式化文本,价格......)。
我只被允许在 Dapper 中使用存储过程(客户的策略)。我正在寻找一种更好的方法来创建这个读取模型:
1.调用现有存储过程,将存储过程结果映射到DTO上,然后再次将结果映射到我的读取模型上
public class Cart
{
public Cart(CartDb cartDb, IEnumerable<CartDetailDb> cartDetailsDb,
OperationDB operationDb)
{
//Code
}
}
-> 有两个层次的对象,我觉得很乱
2.创建将直接映射到我的读取模型的存储过程(以避免 DTO)
-> 我不喜欢这种方法,因为我最终可能会在存储过程中添加一些逻辑
3.使用视图模型
其他建议?