首页 新闻 赞助 找找看

abp vnext实体映射问题

0
[待解决问题]

代码如下:
[DependsOn(typeof(ApplicationContractModule))]
[DependsOn(typeof(EntityFrameCoreModule))]
[DependsOn(typeof(AbpAutoMapperModule))]
[DependsOn(typeof(CommonModule))]
public class ApplicationServiceModule:AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpAutoMapperOptions>(options =>
{
options.AddProfile<HqhProjectAutoMapperProfile>(validate: true);
});
}
}

/// <summary>
/// 实体与Dto映射关系
/// </summary>
public class HqhProjectAutoMapperProfile : Profile
{
public HqhProjectAutoMapperProfile()
{
CreateMap<AddEditUserDto, User>().ForMember(f=>f.Password,opt=>opt.Ignore()).ForMember(f=>f.LastLoginTime,opt=>opt.Ignore());
CreateMap<User, UserDto>();
}
}

服务方法代码:
var entity = ObjectMapper.Map<AddEditUserDto, User>(input);
entity.Password = EncryptionPwd(_option.InitPassword);
await _userRepository.InsertAsync(entity);
映射的时候报异常:
Value cannot be null. (Parameter 'provider')
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Volo.Abp.Application.Services.ApplicationService.LazyGetRequiredService[TRef](Type serviceType, TRef& reference)
at Volo.Abp.Application.Services.ApplicationService.LazyGetRequiredService[TService](TService& reference)
at Volo.Abp.Application.Services.ApplicationService.get_ObjectMapper()
at hqh.project.Application.Services.Services.UserService.<AddEditUser>d__3.MoveNext() in E:\test\hqh.project\hqh.project\hqh.project\hqh.project.Application.Services\Services\UserService.cs:line 46
请问有知道哪里没配置的吗,

花开花落-2014的主页 花开花落-2014 | 初学一级 | 园豆:67
提问于:2020-05-07 15:13
< >
分享
所有回答(1)
0

我也遇到这个问题,请问有解决吗?

song-z | 园豆:204 (菜鸟二级) | 2020-05-26 02:18

没解决

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2020-05-26 09:23

@花开花落-2014: 我解决这个问题了。
看报错,是试图从 ServiceProvider 里获取IObjectMapper实例时, ServiceProvidernull 引起的。
我的使用场景是和在控制台程序里使用 EasyNetQ 有关。
AdvancedBus.Consume 方法处理队列消息时传递一个委托(貌似每次执行这个委托都是在不同的线程里,因为context.ServiceProvider在里边 IsDisposed=true),而在异步委托里无法使用 DI 实例化 一个 ApplicationService. 后来定义了一个静态类以及静态属性 IServiceProvider并在执行PostConfigureServices时赋值,然后就解决了。
但是如果你是在 WebAPI 里使用,应该不会遇到我这个问题。
供参考。

支持(0) 反对(0) song-z | 园豆:204 (菜鸟二级) | 2020-05-26 12:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册