gpt4 book ai didi

c# - 我可以在 AutoMapper 中集中我想忽略的映射吗?

转载 作者:行者123 更新时间:2023-12-04 15:14:29 26 4
gpt4 key购买 nike

我的类(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com