-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ABP VNext内置过滤ShouldFilterEntity=>CreateFilterExpression查询报错Object reference not set to an instance of an object. #270
Comments
是否可以发一下的dbcontext是如何构建的是否没有吧LazyServiceProvider进行赋值 |
使用的https://github.com/xuejmnet/ShardingWithFramework 这个Demo测试的 |
protected override bool ShouldFilterEntity(IMutableEntityType entityType) where TEntity : class
} protected override Expression<Func<TEntity, bool>> CreateFilterExpression() where TEntity : class
} |
EFCore的ServiceProvider是scope类型的你把app.serviceProvider给了一个静态变量他是全局单例的serviceprovider怎么能给abpcontext的LazyServiceprovider呢这样肯定是有问题呀 |
两者的生命周期都不一样 |
你这玩意写的就有问题 CreateFilterExpression当然不可以这么处理了你依赖注入的生命周期弄错了不可以吧scope的服务提供者给静态属性的 |
那这个要怎么处理呢 那个是abp内置的 我只是测试重现这个问题 |
这个是abp的我不是很清楚 |
原因应该是 AbstractShardingAbpDbContext 继承AbpDbContext CreateFilterExpression是程序启动就会执行注册 此时 |
@MrShenf 主要是我没有你运行的代码也不是很清楚abp我本身不使用abp所以可能并不能对您发送的问题有太好的建议提供,不过附加一下调试源码应该可以了解更详细的信息(#^.^#) |
@MrShenf 使用main分支的而不是le7的,le7是sharding-core版本号小于7的时候的案例 |
如果把这个配置去掉那么abp就没办法实现分表分库了 |
您写的实例项目我测试了一下,注释掉 override AbpDbContext那两个方法 base.LazyServiceProvider确实有值了image |
The text was updated successfully, but these errors were encountered: