C# 忽略AutoMapper中的属性?

C# 忽略AutoMapper中的属性?,c#,.net,automapper,C#,.net,Automapper,我正在使用Automapper将一个对象属性复制到另一个对象,稍后将使用EF在数据库中进行更新 问题是如何告诉Automapper复制每个属性,但忽略特定属性(在本例中,它将是Id)。我是AutoMapper的新手,刚刚完成了这段代码。我没有其他配置或在项目中使用AutoMap Mapper.Map(lead, existingLead); 我已经在您的Mapper.CreateMap()上下载了AutoMapper表单 .ForSourceMember(x => x.Id, opt =

我正在使用Automapper将一个对象属性复制到另一个对象,稍后将使用EF在数据库中进行更新

问题是如何告诉Automapper复制每个属性,但忽略特定属性(在本例中,它将是Id)。我是AutoMapper的新手,刚刚完成了这段代码。我没有其他配置或在项目中使用AutoMap

Mapper.Map(lead, existingLead);

我已经在您的
Mapper.CreateMap()
上下载了AutoMapper表单

.ForSourceMember(x => x.Id, opt => opt.Ignore())

更新:
根据自动映射,似乎
.Ignore()
被重命名为
.DoNotValidate()

我使用此扩展方法:

public static IMappingExpression<TSource, TDestination> IgnoreMember<TSource, TDestination>(
    this IMappingExpression<TSource, TDestination> map, Expression<Func<TDestination, object>> selector)
{
    map.ForMember(selector, config => config.Ignore());
    return map;
}
publicstaticimappingexpression IgnoreMember(
此IMappingExpression映射(表达式选择器)
{
map.ForMember(选择器,config=>config.Ignore());
返回图;
}
我是这样用的

Mapper.CreateMap<MyType1, MyType2>().IgnoreMember(m => m.PropertyName);
Mapper.CreateMap().IgnoreMember(m=>m.PropertyName);

希望对您有所帮助。

抱歉,在哪里可以找到Mapper.CreateMap?我刚刚使用Nuget软件包安装了,我添加的这行代码是我所做的唯一一行。@user576510它应该在AutoMapper名称空间下。只需在自己的行中创建它(后面跟着.ForMember()或.ForSourceMember(),具体取决于绑定方式),您就可以开始了:)@John为什么我需要使用
忽略
?目标类型中缺少的属性将获得其默认值。@JosephKatzman我不知道它可能在过去2年中发生了更改;)@JosephKatzman:opt.Ignore()告诉AutoMapper不要将值映射到该目标成员。默认情况下,AutoMapper映射到目标成员,因此,如果没有目标成员,则该成员不会被映射(并且应该生成编译器错误)。如果目标确实包含该成员,则AutoMapper会尝试查找要从中映射的源成员,除非您使用Ignore()。谢谢,我是AutoMapper的新手,是否需要在配置文件中添加一些配置?我只完成了qeustion中提到的一行代码。Wehre我应该使用Mapper.CreateMap吗?当你的应用程序初始化时,你需要调用一个初始化方法来设置你的类的所有映射。请参阅本指南以了解更多Automapper。
Mapper.CreateMap<MyType1, MyType2>().IgnoreMember(m => m.PropertyName);