我已经在互联网上搜索了几个小时,似乎无法为自己找到解决方案,也无法理解我正在寻找的其他一些类似答案。
我要做的就是忽略AutoMapper中嵌套对象的属性。这是我正在使用的模型的简要概述(出于这个问题的目的,我删除了一些属性以使其更小)。
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
public class ProductDto
{
public int ProductId { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string LabelColor { get; set; }
public DateTime Created { get; set; }
}
public class CategoryDto
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string LabelColor { get; set; }
}
基本上,我想做的是只要通过API查询产品,我的自动映射器都会忽略来自Category类的Created属性。我最接近实现此目标的方法是在查询时忽略整个Category对象。
这是我的Product类的当前映射配置
public class ProductMapping: Profile
{
public ProductMapping()
{
CreateMap<Product, ProductDto>()
.ReverseMap()
.ForMember(x => x.ProductId, o => o.Ignore());
}
}
我可以通过将.ForPath(x => x.Category.Created, o => o.Ignore()
放在.ReverseMap()
之前来清空整个对象
我应该注意,这些类和mapper类当然是通过多个文件分发的,并且CategoryMapping类看起来与ProductMapping相同。它正在删除Created属性,尽管这是预期的。
如果有人可以帮助隔离我的问题,或演示实现此问题的更好方法,我欢迎您提出建议。到那时,我将继续尝试解决此问题。感谢您的帮助!
答案 0 :(得分:0)
如果我正确理解了是否要忽略Category类中的Created字段,那么在从CategoryD映射到Category或从ProductD映射到<->的映射保持不变时,您应该放置忽略逻辑。
CreateMap<Product, ProductDto>()
.ReverseMap()
CreateMap<Category, CategoryDto>()
.ReverseMap()
.ForMember(x => x.Created, o => o.Ignore());
答案 1 :(得分:0)
可能已经回答了我自己的问题,但是我要做的是将ProductDto中的Data类型从Category切换到CategoryDto。我当时以为Automapper会自己解决这个问题。
对不起!谢谢那些花时间给我答案的人!