【发布时间】:2019-09-05 15:47:08
【问题描述】:
我无法在 .net core 2.2 中使用 Auto Mapper。它一直在抛出这个错误:
找到未映射的成员。查看下面的类型和成员。添加一个 自定义映射表达式,忽略,添加自定义解析器,或修改 源/目标类型对于没有匹配的构造函数,添加一个无参数 ctor,添加可选参数,或映射所有构造函数参数 ==================================================== ==================================================== ==================================================== =================================================== AutoMapper为您创建了此类型映射,但您的类型不能 使用当前配置映射。 IDataReader -> List
1 (Destination member list) System.Data.IDataReader -> System.Collections.Generic.List1[[Models.EngineModel, 模型,版本=1.0.0.0,文化=中性, PublicKeyToken=null]](目标成员列表)未映射的属性:容量
这是我的 EngineModel 类:
public class EngineModel
{
public string Id { get; set; }
public int engineNo { get; set; }
public string engineHost { get; set; }
}
这是我的个人资料:
public class EngineMappingProfile : Profile
{
public EngineMappingProfile()
{
CreateMap<IDataReader, EngineModel>()
.ForMember(dest => dest.Id , opt => opt.MapFrom(src => src.GetString(src.GetOrdinal("ID"))))
.ForMember(dest => dest.engineNo , opt => opt.MapFrom(src => src.GetInt32(src.GetOrdinal("ENG_NO"))))
.ForMember(dest => dest.engineHost , opt => opt.MapFrom(src => src.GetString(src.GetOrdinal("ENG_HOST"))))
}
}
这是我的 Startup.cs ConfigureServices 方法:
public void ConfigureServices(IServiceCollection services)
{
Mapper.Initialize(cfg =>
{
cfg.AddProfile<EngineMappingProfile>();
});
services.AddAutoMapper();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddJsonOptions(options =>
{
options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
});
}
以上所有代码都在我的 API 项目中。我在我的商业项目中使用这些配置文件:
var enginesData = AutoMapper.Mapper.Map<IDataReader, List<EngineModel>>(dataReader.mcDataReader);
我正在使用“AutoMapper.Extensions.Microsoft.DependencyInjection (6.0.0)”和“AutoMapper (8.0.0)”
【问题讨论】:
-
您可能缺少个人资料。您显示了用于映射
IDataReader->EngineModel的配置文件,但您实际上是在尝试映射IDataReader->List<EngineModel>。 -
它曾经在.net框架中没有任何问题
标签: c# asp.net-core .net-core automapper