具有嵌套 1:M、M:1 关系的 Automapper 映射
Automapper mapping with nested 1:M, M:1 relations
我有这样的关系:
一对多:订单-订单详情
多对一:订单详细信息-产品
我的模特:
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。我的订单如下:
| Order
|----OrderDetails
| |----Product
|----OrderDetails
|----Product
如果我的 DTO 看起来像这样:
public class OrderDetailsResponse
{
.....
public Order Order { get; set; }
}
如何配置 AutoMapper 来实现这一点?
任何提示或建议将不胜感激。
谢谢。
如果您的实体设置正确,AutoMapper 应该会处理这种情况。我注意到的第一件事是你可能对关系没有很好的理解。查看此示例以了解详细信息。
https://www.entityframeworktutorial.net/efcore/one-to-many-conventions-entity-framework-core.aspx
正确设置模型后,以下一行就足够了。
public AutoMapperProfile()
{
CreateMap<Order, OrderDetailsResponse>();
}
你的模型应该是
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.
}
您可以在此处以两种方式查看模型之间定义的关系。
现在,您的 DTO 可能是
public class OrderDetailsResponse
{
// Maybe some more properties
public ICollection<OrderDetail> OrderDetails { get; set; }
}
我有这样的关系:
一对多:订单-订单详情
多对一:订单详细信息-产品
我的模特:
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。我的订单如下:
| Order
|----OrderDetails
| |----Product
|----OrderDetails
|----Product
如果我的 DTO 看起来像这样:
public class OrderDetailsResponse
{
.....
public Order Order { get; set; }
}
如何配置 AutoMapper 来实现这一点? 任何提示或建议将不胜感激。
谢谢。
如果您的实体设置正确,AutoMapper 应该会处理这种情况。我注意到的第一件事是你可能对关系没有很好的理解。查看此示例以了解详细信息。
https://www.entityframeworktutorial.net/efcore/one-to-many-conventions-entity-framework-core.aspx
正确设置模型后,以下一行就足够了。
public AutoMapperProfile()
{
CreateMap<Order, OrderDetailsResponse>();
}
你的模型应该是
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.
}
您可以在此处以两种方式查看模型之间定义的关系。 现在,您的 DTO 可能是
public class OrderDetailsResponse
{
// Maybe some more properties
public ICollection<OrderDetail> OrderDetails { get; set; }
}