我的解决方案中有以下类:
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; }
}
我有以下接口:
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; }
}
我的自动映射器配置是这样的:
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));
我收到映射类型错误:车辆模型实体 -> IVehicleModel。
我想我没有正确创建我的映射。我应该如何配置我的映射以避免这种情况?
映射配置似乎正确。QueryableExtensions.ToListAsync 方法返回一个Task<List<T>>
,尝试在映射中传递vehicleMakes.Result
。