【发布时间】:2015-09-28 23:38:33
【问题描述】:
我有两个表(列表):customers 和 sales,它们具有一对多的关系。我正在尝试创建一个自动映射,该自动映射会生成一个填充有 CustomerSalesDto 的列表。对于每个销售对象,都应使用销售信息和进行销售的客户的一些信息创建一个新的 CustomerSalesDto。
这可以通过 Automapping 完成吗?我该如何完成?
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class Sale
{
public int Id { get; set; }
public double Price { get; set; }
public DateTime Date { get; set; }
public int CustomarId { get; set;} // Id from Customer who made a sale.
}
public class CustomerSalesDto
{
public double Price { get; set; } // from Sale
public DateTime Date { get; set; } // from Sale
public string Name { get; set; } // from Customer
public string Email { get; set; } // from Customer
}
【问题讨论】:
-
如果
Sale有一个Customer类型的属性已完全填充,那么是的,这是可能的。 -
如果类型保持为 int 有什么解决方法吗?我正在使用一个框架,当他进行销售(而不是对象)时,它会自动将客户 ID 注入数据库。
-
您使用实体框架还是手动执行此操作?你如何填充
Sale对象? -
使用服务和存储库模式(内部的实体框架)填充销售。在与“CreateSale()”函数相同的服务中应该有另一个函数“GetSales()”,其中所有销售都与匹配的用户信息一起存储在 DTO 列表中。
-
TBH a
Sale有一个关联的Customer,因此您可以通过向Sale添加一个附加属性来对此进行建模 - 否则要创建您的CustomerSalesDto,您需要访问存储库以获取销售和客户数据 - 但是您如何从CustomerSalesDto知道客户是谁以及销售是什么? (类中没有id)
标签: c# asp.net-mvc asp.net-mvc-5 automapper automapping