从ViewModel中的另一个表实现一个附加属性
本文关键字:一个 属性 ViewModel 另一个 实现 | 更新日期: 2023-09-27 18:03:50
public class Order()
{
public int ordernumId {get;set;}
public int factoryId {get;set;}
}
public class Factory
{
public int factoryId {get;set;}
public int factoryName {get;set;}
}
- 只调用一次数据库。
- 工厂名称和订单代码相同网页。
想象一下有1500万个其他的viewmodel想要一个相似的
Public Class Order_Details_VM { public int ordernumId {get;set;} public int factoryName {get;set;} }
我的图层是这样的:视图->视图模型=>控制器->库-> EntityFramework
存储库通常会传回可查询的对象,但有时会传回DTO或EF模型(因为DTO是相同的)。
我想在这里提出一些建议,这些建议不涉及通过成员规则要求automapper为1500万个视图模型做这件事。
哦,这些都是日文,所以自动变平不起作用。: -)
我如何"正确地"做这件事?
在我有了更多的经验之后,在这里回答我自己的问题。
正确的方法是映射到更大的DTO对象。
因此,例如,我的OrderDto
应该包含FactoryName
,这可能看起来像浪费许多地方的FactoryName没有在视图中使用,但它几乎没有任何开销,只是在默认情况下包括它,所以数据库总是连接并获得工厂名称。
所以任何时候任何页面想要得到任何与订单有关的东西,它也可以选择访问FactoryName
领域层
public class Order()
{
public int ordernumId {get;set;}
public int factoryId {get;set;}
}
public class Factory
{
public int factoryId {get;set;}
public int factoryName {get;set;}
}
应用程序/服务层
public class OrderDto()
{
public int ordernumId {get;set;}
public int factoryId {get;set;}
public int factoryName {get;set;}
}
表示层public Class Order_Details_VM
{
public int ordernumId {get;set;}
public int factoryName {get;set;}
}