C# 在AutoMapper中我可以集中我想忽略的映射吗?
我有一些类,它们具有通常的C# 在AutoMapper中我可以集中我想忽略的映射吗?,c#,automapper,C#,Automapper,我有一些类,它们具有通常的CreatedDate,CreatedById,EditedDate,EditedById等字段,当从域模型->实体模型映射时,我会忽略这些字段(稍后由数据库填充) 我的映射现在到处都是映射忽略,看起来有点像 CreateMap<UpdateProvider, ProviderInstance>() .ForMember(e => e.Id, opt => opt.Ignore()) .ForMem
CreatedDate
,CreatedById
,EditedDate
,EditedById
等字段,当从域模型->实体模型映射时,我会忽略这些字段(稍后由数据库填充)
我的映射现在到处都是映射忽略,看起来有点像
CreateMap<UpdateProvider, ProviderInstance>()
.ForMember(e => e.Id, opt => opt.Ignore())
.ForMember(e => e.CreatedDate, opt => opt.Ignore())
.ForMember(e => e.CreatedById, opt => opt.Ignore())
.ForMember(e => e.EditedDate, opt => opt.Ignore())
.ForMember(e => e.EditedById, opt => opt.Ignore())
.ForMember(e => e.ArchivedDate, opt => opt.Ignore())
.ForMember(e => e.ArchivedById, opt => opt.Ignore());
CreateMap()
.ForMember(e=>e.Id,opt=>opt.Ignore())
.ForMember(e=>e.CreatedDate,opt=>opt.Ignore())
.ForMember(e=>e.CreatedById,opt=>opt.Ignore())
.ForMember(e=>e.EditedDate,opt=>opt.Ignore())
.ForMember(e=>e.EditedById,opt=>opt.Ignore())
.ForMember(e=>e.ArchivedDate,opt=>opt.Ignore())
.ForMember(e=>e.ArchivedById,opt=>opt.Ignore());
我是否可以将其集中在一种方法中,以坚持干燥原则。如果有助于这些字段中的每个字段都具有名为IIdentifiable
、iReadable
、iEdit
、iChiveable
的接口
我希望创建一个类似
.IgnoreDbGeneratedFields()
的扩展方法,沿着以下行的扩展方法应该可以工作:
public static IMappingExpression<T1, T2> IgnoreDbGeneratedFields<T1, T2>(this IMappingExpression<T1, T2> e)
where T2 : IIdentifiable, ICreateable, IEditable, IArchiveable
{
return e
.ForMember(x => x.Id, opt => opt.Ignore())
.ForMember(x => x.CreatedDate, opt => opt.Ignore())
.ForMember(x => x.CreatedById, opt => opt.Ignore())
.ForMember(x => x.EditedDate, opt => opt.Ignore())
.ForMember(x => x.EditedById, opt => opt.Ignore())
.ForMember(x => x.ArchivedDate, opt => opt.Ignore())
.ForMember(x => x.ArchivedById, opt => opt.Ignore());
}
公共静态IMappingExpression IgnoreDbGeneratedFields(此IMappingExpression e)
其中T2:i可识别、i可读取、i可编辑、i可编辑
{
返回e
.ForMember(x=>x.Id,opt=>opt.Ignore())
.ForMember(x=>x.CreatedDate,opt=>opt.Ignore())
.ForMember(x=>x.CreatedById,opt=>opt.Ignore())
.ForMember(x=>x.EditedDate,opt=>opt.Ignore())
.ForMember(x=>x.EditedById,opt=>opt.Ignore())
.ForMember(x=>x.ArchivedDate,opt=>opt.Ignore())
.ForMember(x=>x.ArchivedById,opt=>opt.Ignore());
}
你想要addglobalingore
@LucianBargaoanu我刚刚尝试了addgoballingore
,但是当从实体->域映射回时,这也会被忽略。我只想在从域->实体映射时使用它。你可以尝试ShouldMapProperty
。Jonas正是我想要的。我已经将其更新为一个完整的示例