如何解决将.Net Core 2.2和ASP.NET Boilerplate 4.5升级到.Net Core 3.1和ASP.NET Boilerplate 5.13时出现ObjectMapper错误
ObjectMapper可在.Net Core 2.2和ASP.NET Boilerplate 4.5上运行->确定
但适用于.Net Core 3.1和ASP.NET Boilerplate 5.13->错误
还必须进行其他设置吗?
我的错误消息:
"Missing type map configuration or unsupported mapping.\r\n\r\nMapping types:\r\nProd -> ProdDto\r\ncom.myproject.Core.Models.Prod -> com.myproject.Application.Prod.Dto.ProdDto"
我的AppService:
public override async Task<ProdDto> GetAsync(EntityDto<int> input)
{
try
{
var entity = await _prodManager.GetProdByIdAsync(input.Id);
var result = ObjectMapper.Map<ProdDto>(entity);
return result;
}
catch (Exception ex)
{
throw new UserFriendlyException(ex.Message);
}
}
我的模块:
[DependsOn(
typeof(AbpAutoMapperModule))]
public class ProdApplicationModule : AbpModule
{
public override void PreInitialize()
{
}
public override void Initialize()
{
var thisAssembly = typeof(ProdApplicationModule).GetAssembly();
IocManager.RegisterassemblyByConvention(thisAssembly);
Configuration.Modules.AbpAutoMapper().Configurators.Add(
cfg => cfg.AddMaps(thisAssembly)
);
}
}
我的个人资料:
public class ProdMapProfile : Profile
{
public ProdMapProfile()
{
CreateMap<Core.Models.Prod,ProdDto>();
}
}
解决方法
如果您的实体和DTO类未与所有属性(或变量)进行映射,则您可以忽略某些属性(未映射的属性可能会导致缺少映射错误)。
library(themis)
library(recipes)
library(tune)
library(parsnip)
library(workflows)
library(dials)
library(rsample)
xg_mod <- parsnip::boost_tree(mode = "classification",trees = tune(),tree_depth = tune(),min_n = tune(),loss_reduction = tune(),learn_rate = tune()) %>%
set_engine("xgboost")
xg_grid <- grid_latin_hypercube(over_ratio(range = c(0,1)),trees(),tree_depth(),min_n(),loss_reduction(),learn_rate(),size = 5)
my_recipe <- recipe(class ~ .,data = circle_example) %>%
step_rose(class,over_ratio = tune())
workflow() %>%
add_model(xg_mod) %>%
add_recipe(my_recipe) %>%
tune_grid(resamples = mc_cv(circle_example,strata = class),grid = xg_grid)
,
当我更新到net core 3.1时,我遇到了同样的问题,要解决该问题,您需要映射Get
的结果,请参见您代码上的修改
public override async Task<ProdDto> GetAsync(EntityDto<int> input)
{
try
{
var entity = await _prodManager.GetProdByIdAsync(input.Id).Result;
var result = ObjectMapper.Map<ProdDto>(entity);
return result;
}
catch (Exception ex)
{
throw new UserFriendlyException(ex.Message);
}
}
之所以会这样,是因为它试图映射异步响应,所以当您添加.result
时,它会起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。