成员的 Automapper 自定义配置仅支持类型上的顶级个人成员
Automapper Custom configuration for members is only supported for top-level individual members on a type
我正在尝试映射从数据库中获得的结果,并且我有以下模型
public class ClientTest
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClientTestDto
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClientDbItem
{
public ClientTest Client { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Value { get; set; }
}
和以下映射
CreateMap<ClientTest, ClientTestDto>();
CreateMap<ClientDbItem, ClientTestDto>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.Client));
当我 运行 得到软件时
Custom configuration for members is only supported for top-level
individual members on a type
如果我首先为 ClientTest 和 ClientTestDto 创建配置,为什么会发生这种情况?
有一个特殊的 API,IncludeMembers
。参见 here。
当您尝试将顶级元素映射到构造函数时,也可能会出现此错误:
.ForMember(dest => dest, opt => opt.MapFrom(
src => new B1(src.Prop3, src.Prop4)));
而不是将顶级元素 MEMBER 映射到构造函数(工作正常):
.ForMember(dest => dest.MyProperty, opt => opt.MapFrom(
src => new B1(src.Prop3, src.Prop4)));
为避免这种情况,请使用 .ForCtorParam
示例:
CreateMap<Source, DestinationWithConstructor>()
.ForCtorParam("code", opt => opt.MapFrom(src => src.Prop3))
.ForCtorParam("text", opt => opt.MapFrom(src => src.Prop4))
我正在尝试映射从数据库中获得的结果,并且我有以下模型
public class ClientTest
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClientTestDto
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClientDbItem
{
public ClientTest Client { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Value { get; set; }
}
和以下映射
CreateMap<ClientTest, ClientTestDto>();
CreateMap<ClientDbItem, ClientTestDto>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.Client));
当我 运行 得到软件时
Custom configuration for members is only supported for top-level individual members on a type
如果我首先为 ClientTest 和 ClientTestDto 创建配置,为什么会发生这种情况?
有一个特殊的 API,IncludeMembers
。参见 here。
当您尝试将顶级元素映射到构造函数时,也可能会出现此错误:
.ForMember(dest => dest, opt => opt.MapFrom(
src => new B1(src.Prop3, src.Prop4)));
而不是将顶级元素 MEMBER 映射到构造函数(工作正常):
.ForMember(dest => dest.MyProperty, opt => opt.MapFrom(
src => new B1(src.Prop3, src.Prop4)));
为避免这种情况,请使用 .ForCtorParam
示例:
CreateMap<Source, DestinationWithConstructor>()
.ForCtorParam("code", opt => opt.MapFrom(src => src.Prop3))
.ForCtorParam("text", opt => opt.MapFrom(src => src.Prop4))