c# – AutoMapper ForMember忽略不工作

在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())
    ; 

执行地图:

existingStratusVendorContact = Mapper.Map<VendorContact>(vendorContact);

看到this other answer,但看起来我已经这样做了.

更新:

Fyi,我在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())
        ;  

});

解决方法:

您的问题是您没有给予现代对象automapper. Automapper绝对可以做到这一点.

Mapper.Map<VendorContact>(vendorContact, existingStratusVendorContact);

应该做你想做的.您当前的代码正在创建一个全新的对象,并将现有的StratusVendorContact替换为全新的对象.上面的代码将按预期采用现有对象和更新值.

上一篇:C#更改Linq表达式的返回值


下一篇:c# – 在自定义映射中调用IMappingEngine.Map