C# AutoMappingException:映射类型错误
我的解决方案中有以下类:C# AutoMappingException:映射类型错误,c#,automapper,C#,Automapper,我的解决方案中有以下类: public class VehicleMakeEntity { public Guid Id { get; set; } public string Name { get; set; } public ICollection<VehicleModelEntity> VehicleModels { get; set; } } public class VehicleModelEntit
public class VehicleMakeEntity
{
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<VehicleModelEntity> VehicleModels { get; set; }
}
public class VehicleModelEntity
{
public Guid Id { get; set; }
public Guid VehicleMakeId { get; set; }
public string Name { get; set; }
public VehicleMakeEntity VehicleMake { get; set; }
}
public class VehicleMake : IVehicleMake
{
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<IVehicleModel> VehicleModels { get; set; }
}
public class VehicleModel : IVehicleModel
{
public Guid Id { get; set; }
public Guid VehicleMakeId { get; set; }
public string Name { get; set; }
public IVehicleMake VehicleMake { get; set; }
}
公共类车辆制造商实体
{
公共Guid Id{get;set;}
公共字符串名称{get;set;}
公共ICollection车辆模型{get;set;}
}
公共级车辆标准
{
公共Guid Id{get;set;}
公共Guid VehicleMakeId{get;set;}
公共字符串名称{get;set;}
公共车辆制造实体车辆制造{get;set;}
}
公共级车辆品牌:IVehicleMake
{
公共Guid Id{get;set;}
公共字符串名称{get;set;}
公共ICollection车辆模型{get;set;}
}
公共类车辆模型:IVehicleModel
{
公共Guid Id{get;set;}
公共Guid VehicleMakeId{get;set;}
公共字符串名称{get;set;}
公共IVehicleMake车辆make{get;set;}
}
我有以下接口:
public interface IVehicleMake
{
Guid Id { get; set; }
string Name { get; set; }
ICollection<IVehicleModel> VehicleModels { get; set; }
}
public interface IVehicleModel
{
Guid Id { get; set; }
Guid VehicleMakeId { get; set; }
string Name { get; set; }
IVehicleMake VehicleMake { get; set; }
}
公共接口IVehicleMake
{
Guid Id{get;set;}
字符串名称{get;set;}
ICollection车辆模型{get;set;}
}
公共接口IVehicleModel
{
Guid Id{get;set;}
Guid VehicleMakeId{get;set;}
字符串名称{get;set;}
IVehicleMake车辆make{get;set;}
}
我的AutoMapper配置如下:
AutoMapper.Mapper.Initialize(cfg =>
{
cfg.CreateMap<VehicleMakeEntity, VehicleMake>().ReverseMap();
cfg.CreateMap<VehicleMakeEntity, IVehicleMake>().ReverseMap();
cfg.CreateMap<IVehicleMake, VehicleMake>().ReverseMap();
cfg.CreateMap<VehicleModelEntity, VehicleModel>().ReverseMap();
cfg.CreateMap<VehicleModelEntity, IVehicleModel>().ReverseMap();
cfg.CreateMap<IVehicleModel, VehicleModel>().ReverseMap();
});
var makes = Context.VehicleMakes.AsQueryable();
var vehicleMakes = await makes.Include(m => m.VehicleModels).ToListAsync();
return new List<IVehicleMake>(AutoMapper.Mapper.Map<List<VehicleMake>>(vehicleMakes));
AutoMapper.Mapper.Initialize(cfg=>
{
CreateMap().ReverseMap();
CreateMap().ReverseMap();
CreateMap().ReverseMap();
CreateMap().ReverseMap();
CreateMap().ReverseMap();
CreateMap().ReverseMap();
});
当我尝试这样做时:
AutoMapper.Mapper.Initialize(cfg =>
{
cfg.CreateMap<VehicleMakeEntity, VehicleMake>().ReverseMap();
cfg.CreateMap<VehicleMakeEntity, IVehicleMake>().ReverseMap();
cfg.CreateMap<IVehicleMake, VehicleMake>().ReverseMap();
cfg.CreateMap<VehicleModelEntity, VehicleModel>().ReverseMap();
cfg.CreateMap<VehicleModelEntity, IVehicleModel>().ReverseMap();
cfg.CreateMap<IVehicleModel, VehicleModel>().ReverseMap();
});
var makes = Context.VehicleMakes.AsQueryable();
var vehicleMakes = await makes.Include(m => m.VehicleModels).ToListAsync();
return new List<IVehicleMake>(AutoMapper.Mapper.Map<List<VehicleMake>>(vehicleMakes));
var makes=Context.VehicleMakes.AsQueryable();
var vehicleMakes=wait makes.Include(m=>m.vehicleMakes.toListSync();
返回新列表(AutoMapper.Mapper.Map(vehicleMakes));
我得到了映射类型错误:VehicleModelenty->IVehicleModel
我想我没有正确创建映射。如何配置映射以避免这种情况?映射配置似乎正确。该方法返回一个
任务
,尝试在映射中传递vehicleMakes.Result
。检查错误中的内部异常。我在配置中添加了以下映射:cfg.CreateMap().ReverseMap();我不再收到任何错误,但是列表没有填充,它是空的,所以问题没有解决。另外,当我在检索make时删除“Include(m=>m.VehicleModels)”时,然后映射就开始工作了。我忘了提到我使用Ninject动态加载映射配置,如下所示:公共类DIModule:Ninject.Modules.NinjectModule{public override void load(){//Automapper initialization//}这可能是问题所在吗?