C# 具有嵌套1:M,M:1关系的自动映射

C# 具有嵌套1:M,M:1关系的自动映射,c#,.net,automapper,C#,.net,Automapper,我有这样的关系: 一对多:订单详细信息 多对一:OrderDetails产品 我的模型: public class Order { public ICollection<OrderDetail> OrderDetails {get; set;} } public class OrderDetails { public Order Order { get; set; } public Product Product {get; set;} } public class

我有这样的关系:

一对多:订单详细信息

多对一:OrderDetails产品

我的模型:

public class Order
{ 
  public ICollection<OrderDetail> OrderDetails {get; set;}
}

public class OrderDetails
{
  public Order Order { get; set; }
  public Product Product {get; set;}
}

public class Product
{
  public ICollection<OrderDetail> OrderDetails { get; set; }
}
如果我的DTO如下所示:

public class OrderDetailsResponse
{
   .....

   public Order Order { get; set; }
}
如何配置AutoMapper来实现这一点? 如有任何提示或建议,将不胜感激


谢谢。

如果您的实体设置正确,AutoMapper应该会处理该场景。我注意到的第一件事是,你可能对人际关系不是很了解。查看此示例了解详细信息

完成正确的模型设置后,以下一行就足够了

public AutoMapperProfile()
{
    CreateMap<Order, OrderDetailsResponse>();
}
public AutoMapperProfile()
{
CreateMap();
}
你的模型应该是

public class Order
{  
    // Maybe some more properties

    public ICollection<OrderDetail> OrderDetails {get; set;}
}

public class OrderDetails
{  
    // Maybe some more properties

    public Product Product {get; set;}
}

public class Product
{  
    // Maybe some more properties

    // You do not need anything here.
}
公共类秩序
{  
//也许还有更多的财产
公共ICollection OrderDetails{get;set;}
}
公共类OrderDetails
{  
//也许还有更多的财产
公共产品产品{get;set;}
}
公共类产品
{  
//也许还有更多的财产
//你不需要任何东西。
}
在这里,您可以通过两种方式看到模型之间定义的关系。 现在,你的DTO可能是

public class OrderDetailsResponse
{  
    // Maybe some more properties

    public ICollection<OrderDetail> OrderDetails { get; set; }
}
公共类OrderDetails响应
{  
//也许还有更多的财产
公共ICollection OrderDetails{get;set;}
}
public class OrderDetailsResponse
{  
    // Maybe some more properties

    public ICollection<OrderDetail> OrderDetails { get; set; }
}