AutoMapper ForMember忽略不起作用

Cha*_*son 6 c# automapper

在MVC应用中执行相同实体类型的副本,但希望忽略复制主键(对现有实体进行更新)。但是在下面的映射中将Id列设置为忽略不起作用,并且Id正在被覆盖。

cfg.CreateMap<VendorContact, VendorContact>()
    .ForMember(dest => dest.Id, option => option.Ignore())
    .ForMember(dest => dest.CreatedById, option => option.Ignore())
    .ForMember(dest => dest.CreatedOn, option => option.Ignore())
    ; 
Run Code Online (Sandbox Code Playgroud)

执行地图:

existingStratusVendorContact = Mapper.Map<VendorContact>(vendorContact);
Run Code Online (Sandbox Code Playgroud)

看到了另一个答案,但看来我已经在这样做了。

更新:

仅供参考,我正在Global.asax中创建地图,如下所示:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<VendorContact, VendorContact>()
        .ForMember(dest => dest.Id, option => option.Ignore())
        .ForMember(dest => dest.CreatedById, option => option.Ignore())
        .ForMember(dest => dest.CreatedOn, option => option.Ignore())
        ;  

});
Run Code Online (Sandbox Code Playgroud)

Tho*_*oby 5

您的问题是您没有为 automapper 提供现有对象。Automapper 绝对可以做到这一点。

Mapper.Map<VendorContact>(vendorContact, existingStratusVendorContact);
Run Code Online (Sandbox Code Playgroud)

应该做你想做的。您当前的代码正在创建一个全新的对象,并替换existingStratusVendorContact为全新的对象。上面的代码将按照您的预期获取现有对象并更新值。