从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;}
}
  1. 只调用一次数据库。
  2. 工厂名称和订单代码相同网页。
  3. 想象一下有1500万个其他的viewmodel想要一个相似的

    Public Class Order_Details_VM 
    {
        public int ordernumId {get;set;}
        public int factoryName {get;set;}
    }
    

我的图层是这样的:视图->视图模型=>控制器->库-> EntityFramework

存储库通常会传回可查询的对象,但有时会传回DTO或EF模型(因为DTO是相同的)。

我想在这里提出一些建议,这些建议不涉及通过成员规则要求automapper为1500万个视图模型做这件事。

哦,这些都是日文,所以自动变平不起作用。: -)

我如何"正确地"做这件事?

从ViewModel中的另一个表实现一个附加属性

在我有了更多的经验之后,在这里回答我自己的问题。

正确的方法是映射到更大的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;}
}