Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在AutoMapper中我可以集中我想忽略的映射吗?_C#_Automapper - Fatal编程技术网

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正是我想要的。我已经将其更新为一个完整的示例