如何使用 AutoMapper 忽略目标成员?
How to ignore destination member with AutoMapper?
我有这两个 类:
public class MyModel()
{
public int Id {get; set;}
public string Name {get; set;}
public bool IgnoreModel {get; set;}
}
public class MyDto()
{
public int Id {get; set;}
public string Name {get; set;}
public bool IgnoreDto {get; set;}
}
我想忽略 IgnoreModel
和 IgnoreDto
。我的映射如下所示:
Mapper.CreateMap<MyModel, MyDto>().Bidirectional()
.ForMember(model=> model.IgnoreModel, option => option.Ignore())
.ForSourceMember(dto => dto.IgnoreDto, option => option.Ignore());
其中 Bidirectional() 是扩展:
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
但是,我收到 IgnoreDto
未映射的错误消息:
`找到未映射的成员。查看下面的类型和成员。
添加自定义映射表达式,忽略,添加自定义解析器,或修改source/destination类型
MyModel -> MyDto(目标成员列表)
ModelAssembly.MyModel -> DtoAssembly.MyDto(目标成员列表)
未映射的属性:
忽略 Dto`
忽略这种映射的正确方法是什么?
在映射后应用您的扩展(returns 另一个对象)使您的映射规则应用于第二个映射。您的第一个映射没有应用任何规则。
要使其正常工作,请分别对每个映射使用忽略:
Mapper.CreateMap<MyModel, MyDto>()
.ForMember(model=> model.IgnoreModel, option => option.Ignore());
Mapper.CreateMap<MyDto, MyModel>()
.ForMember(model=> model.IgnoreDto, option => option.Ignore());
我有这两个 类:
public class MyModel()
{
public int Id {get; set;}
public string Name {get; set;}
public bool IgnoreModel {get; set;}
}
public class MyDto()
{
public int Id {get; set;}
public string Name {get; set;}
public bool IgnoreDto {get; set;}
}
我想忽略 IgnoreModel
和 IgnoreDto
。我的映射如下所示:
Mapper.CreateMap<MyModel, MyDto>().Bidirectional()
.ForMember(model=> model.IgnoreModel, option => option.Ignore())
.ForSourceMember(dto => dto.IgnoreDto, option => option.Ignore());
其中 Bidirectional() 是扩展:
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
但是,我收到 IgnoreDto
未映射的错误消息:
`找到未映射的成员。查看下面的类型和成员。 添加自定义映射表达式,忽略,添加自定义解析器,或修改source/destination类型
MyModel -> MyDto(目标成员列表) ModelAssembly.MyModel -> DtoAssembly.MyDto(目标成员列表)
未映射的属性: 忽略 Dto`
忽略这种映射的正确方法是什么?
在映射后应用您的扩展(returns 另一个对象)使您的映射规则应用于第二个映射。您的第一个映射没有应用任何规则。
要使其正常工作,请分别对每个映射使用忽略:
Mapper.CreateMap<MyModel, MyDto>()
.ForMember(model=> model.IgnoreModel, option => option.Ignore());
Mapper.CreateMap<MyDto, MyModel>()
.ForMember(model=> model.IgnoreDto, option => option.Ignore());