AutoMapper - 缺少类型映射配置 System.Object
AutoMapper - Missing type map configuration System.Object
我在 Startup.cs
中的 EF Core 中设置了 AutoMapper,如下所示:
services.AddAutoMapper(
typeof(EventItemEstablishmentProfile),
typeof(EventItemProfile),
typeof(GroceryItemEstablishmentProfile),
typeof(GroceryItemProfile),
typeof(GroceryStoreItemEstablishmentProfile),
typeof(GroceryStoreItemProfile),
typeof(RestaurantItemEstablishmentProfile),
typeof(RestaurantItemProfile),
typeof(MenuItemEstablishmentProfile),
typeof(MenuItemProfile));
我有这些 AutoMapper 配置文件:
namespace Vepo.Domain
{
public class GroceryItemProfile : Profile
{
public GroceryItemProfile()
{
CreateMap<GroceryItem, GroceryItemDto>();
CreateMap<GroceryItemDto, GroceryItem>();
}
}
}
namespace Vepo.Domain
{
public class GroceryItemEstablishmentProfile : Profile
{
public GroceryItemEstablishmentProfile()
{
CreateMap<GroceryItemEstablishment, GroceryItemEstablishmentDto>();
CreateMap<GroceryItemEstablishmentDto, GroceryItemEstablishment>();
}
}
}
GroceryItemEstablishment
包含一个名为 VeganItem
的 GroceryItem
类型的字段,所以我们在这里讨论的是嵌套映射。
当需要像这样在代码中使用它时:
public async override Task<TVeganItemEstablishmentDto> Insert(TVeganItemEstablishmentDto entity)
{
var toReturnVeganItem = entity.VeganItem;
var toReturnEstablishment = entity.Establishment;
var x = mapper.Map<TVeganItem>(entity);
我收到错误:
AutoMapper.AutoMapperMappingException: Missing type map configuration
or unsupported mapping.
Mapping types: Object -> GroceryItem System.Object ->
Vepo.Domain.GroceryItem
为什么错误说根本涉及类型 Object
?
调试代码我们可以看到类型不是Object:
您正在尝试将 TVeganItemEstablishmentDto
映射到 TVeganItem
。我无法从代码本身看出,但我 猜测 这等同于将 GroceryItemEstablishmentDto
映射到 GroceryItem
。您的配置文件中不存在该映射。您是要将 entity.VeganItem
属性 映射为输入吗?
我在 Startup.cs
中的 EF Core 中设置了 AutoMapper,如下所示:
services.AddAutoMapper(
typeof(EventItemEstablishmentProfile),
typeof(EventItemProfile),
typeof(GroceryItemEstablishmentProfile),
typeof(GroceryItemProfile),
typeof(GroceryStoreItemEstablishmentProfile),
typeof(GroceryStoreItemProfile),
typeof(RestaurantItemEstablishmentProfile),
typeof(RestaurantItemProfile),
typeof(MenuItemEstablishmentProfile),
typeof(MenuItemProfile));
我有这些 AutoMapper 配置文件:
namespace Vepo.Domain
{
public class GroceryItemProfile : Profile
{
public GroceryItemProfile()
{
CreateMap<GroceryItem, GroceryItemDto>();
CreateMap<GroceryItemDto, GroceryItem>();
}
}
}
namespace Vepo.Domain
{
public class GroceryItemEstablishmentProfile : Profile
{
public GroceryItemEstablishmentProfile()
{
CreateMap<GroceryItemEstablishment, GroceryItemEstablishmentDto>();
CreateMap<GroceryItemEstablishmentDto, GroceryItemEstablishment>();
}
}
}
GroceryItemEstablishment
包含一个名为 VeganItem
的 GroceryItem
类型的字段,所以我们在这里讨论的是嵌套映射。
当需要像这样在代码中使用它时:
public async override Task<TVeganItemEstablishmentDto> Insert(TVeganItemEstablishmentDto entity)
{
var toReturnVeganItem = entity.VeganItem;
var toReturnEstablishment = entity.Establishment;
var x = mapper.Map<TVeganItem>(entity);
我收到错误:
AutoMapper.AutoMapperMappingException: Missing type map configuration or unsupported mapping.
Mapping types: Object -> GroceryItem System.Object -> Vepo.Domain.GroceryItem
为什么错误说根本涉及类型 Object
?
调试代码我们可以看到类型不是Object:
您正在尝试将 TVeganItemEstablishmentDto
映射到 TVeganItem
。我无法从代码本身看出,但我 猜测 这等同于将 GroceryItemEstablishmentDto
映射到 GroceryItem
。您的配置文件中不存在该映射。您是要将 entity.VeganItem
属性 映射为输入吗?