c# - 自动映射器 N 到 N
问题描述
我有这些要映射的数据库实体:
产品
public partial class Products
{
public Products()
{
SalesProducts = new HashSet<SalesProducts>();
}
public int ProductId { get; set; }
public string ProductName { get; set; }
public string Description { get; set; }
public float Price { get; set; }
public int Quant { get; set; }
public ICollection<SalesProducts> SalesProducts { get; set; }
}
销售量
public partial class Sales
{
public Sales()
{
SalesProducts = new HashSet<SalesProducts>();
}
public int SaleId { get; set; }
public int? ClientId { get; set; }
public float TotalPrice { get; set; }
public DateTime? Date { get; set; }
public Clients Client { get; set; }
public ICollection<SalesProducts> SalesProducts { get; set; }
}
销售产品
public partial class SalesProducts
{
public int ProductId { get; set; }
public int SaleId { get; set; }
public int Quantity { get; set; }
public Products Product { get; set; }
public Sales Sale { get; set; }
}
这些模型:
产品
public class Products
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public string Description { get; set; }
public float Price { get; set; }
public int Quant { get; set; }
}
销售量
public class Sales
{
public int SaleId { get; set; }
public int ClientId { get; set; }
public string ClientFirstName { get; set; }
public string ClientLastName { get; set; }
public float TotalPrice { get; set; }
public DateTime? Date { get; set; }
}
销售详情
public class SalesDetails
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public string Description { get; set; }
public int Quantity { get; set; }
}
所有销售映射:
public class SalesProfiles : Profile
{
public SalesProfiles()
{
CreateMap<DataModels.Sales, Models.Sales>()
.ForMember(dest => dest.SaleId, opt => opt.MapFrom(src => src.SaleId))
.ForMember(dest => dest.ClientId, opt => opt.MapFrom(src => src.Client.ClientId))
.ForMember(dest => dest.ClientFirstName, opt => opt.MapFrom(src => src.Client.FirstName))
.ForMember(dest => dest.ClientLastName, opt => opt.MapFrom(src => src.Client.LastName))
.ForMember(dest => dest.Date, opt => opt.MapFrom(src => src.Date))
.ForMember(dest => dest.TotalPrice, opt => opt.MapFrom(src => src.TotalPrice));
CreateMap<DataModels.Products, Models.SalesDetails>()
.ForMember(dest => dest.ProductId, opt => opt.MapFrom(src => src.ProductId))
.ForMember(dest => dest.ProductName, opt => opt.MapFrom(src => src.ProductName))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
.ForMember(dest => dest.Quantity, opt => opt.Ignore());
CreateMap<DataModels.SalesProducts, Models.SalesDetails>()
.ForMember(dest => dest.ProductId, opt => opt.MapFrom(src => src.Product.ProductId))
.ForMember(dest => dest.ProductName, opt => opt.MapFrom(src => src.Product.ProductName))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Product.Description))
.ForMember(dest => dest.Quantity, opt => opt.MapFrom(src => src.Quantity));
}
}
产品映射
public class ProductsProfiles : Profile
{
public ProductsProfiles()
{
CreateMap<Models.Products, BindingModels.Products>()
.ForMember(dest => dest.ProductName, opt => opt.MapFrom(src => src.ProductName))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
.ForMember(dest => dest.Quant, opt => opt.MapFrom(src => src.Quant))
.ForMember(dest => dest.Price, opt => opt.MapFrom(src => src.Price))
.ReverseMap();
CreateMap<Models.Products, DataModels.Products>()
.ForMember(dest => dest.ProductId, opt => opt.MapFrom(src => src.ProductId))
.ForMember(dest => dest.ProductName, opt => opt.MapFrom(src => src.ProductName))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
.ForMember(dest => dest.Quant, opt => opt.MapFrom(src => src.Quant))
.ForMember(dest => dest.Price, opt => opt.MapFrom(src => src.Price))
.ReverseMap();
CreateMap<BindingModels.Products, DataModels.Products>()
.ForMember(dest => dest.ProductName, opt => opt.MapFrom(src => src.ProductName))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
.ForMember(dest => dest.Quant, opt => opt.MapFrom(src => src.Quant))
.ForMember(dest => dest.Price, opt => opt.MapFrom(src => src.Price))
.ReverseMap();
CreateMap<DataModels.Products, Models.Products>()
.ForMember(dest => dest.ProductId, opt => opt.MapFrom(src => src.ProductId))
.ForMember(dest => dest.ProductName, opt => opt.MapFrom(src => src.ProductName))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
.ForMember(dest => dest.Quant, opt => opt.MapFrom(src => src.Quant))
.ForMember(dest => dest.Price, opt => opt.MapFrom(src => src.Price))
.ReverseMap();
}
}
这是销售和产品之间的对数关系。有人知道我怎样才能用 automapper 正确映射它吗?
我已经尝试映射,但总是说产品属性未映射
解决方案
推荐阅读
- css - 用类覆盖 CSS
- c# - 在asp.net C#中的GridView中,动态控件在回发期间丢失了
- python - Python 3 中嵌套字典的迭代
- python - Python中的幻数
- python - 需要 Numpy 帮助:如何使用布尔值计算范围并将范围内的值相加?
- sql-server - T-SQL 停留在从存储过程返回的 scope_identity 上
- asp.net-mvc - 如何在 asp.net mvc 中显示表的空列的描述?
- javascript - html中对象标签的数据属性没有更新新的url
- php - 帕斯卡的三角形有效但抛出了一个通知
- android - assets 文件夹中的文件需要使用 resId