我的类(class)有通常的 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());
我能否将其集中在一个方法中以遵守 DRY 原则。如果它有助于这些字段中的每一个都有称为 IIdentifiable
的接口(interface), ICreateable
, IEditable
, IArchiveable
.
我希望只创建一个类似于 .IgnoreDbGeneratedFields<TDestination>()
的扩展方法
最佳答案
按照以下几行的扩展方法应该可以工作:
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());
}
关于c# - 我可以在 AutoMapper 中集中我想忽略的映射吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64571913/