.NET Core + Abp踩坑和填坑记录(1)
1. Net Core 的DI和Abp的DI并存
Startup中 ConfigureServices返回值改为IServiceProvider
在ConfigureServices最后调用return services.AddAbp<AppModule>();
AppModule是一个自己实现的继承AbpModule的类,用于程序集注入和其他配置初始化。
比如
[DependsOn(
typeof(DomainModule),
typeof(InfrastructureModule),
typeof(AbpAspNetCoreModule))]
public class AppModule : AbpModule
{
private readonly IConfigurationRoot appConfiguration; public AppModule(IHostingEnvironment env)
{
appConfiguration = AppConfigurations.Get(env.ContentRootPath, env.EnvironmentName);
} public override void PreInitialize()
{
Configuration.DefaultNameOrConnectionString = appConfiguration["Database:ConnectionString"]; // 注意此处,后面有用
Configuration.UnitOfWork.Timeout = TimeSpan.FromSeconds();
} public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetEntryAssembly());
}
}
2. Abp.EntityFrameworkCore的问题
.NET Core下使用的是EfCoreRepositoryBase类来作为Repository的基类
使用DDD+Abp的时候发现Repository的Insert没有自动持久化到数据库,文档中是说会在UOW完成的时候自动调用持久化方法。
EfCoreRepositoryBase的构造函数需要IDbContextProvider,其中有两个实现:SimpleDbContextProvider不支持UOW,UnitOfWorkDbContextProvider才支持UOW。
IDbContextProvider需要提供DBContext来完成构造,DBContext又需要DBContextOption,
所以要注册以下依赖:
DBContextOption,DBContext,Repository,UnitOfWorkDBContextProvider。
还有一点是UnitOfWorkDBContextProvider的调用链中会用到Configuration.DefaultNameOrConnectionString用于建立数据库连接,这个设置要在AbpModule实现中完成,也就是第1点中代码注释提到的位置,默认是"Default",所以要么把ConnectionString的键名改成Default,要么在AbpModule实现中修改Configuration.DefaultNameOrConnectionString
.NET Core + Abp踩坑和填坑记录(1)的更多相关文章
- MVC5项目转.Net Core 2.2学习与填坑记录(1)
		
流程都是自己摸索,错误地方随便指正... 老项目过于臃肿,并且所有请求都是提交到一个api中,这样当api挂掉的时候,基本所有的项目都瘫痪掉了. 在4月底的时候,下决心将项目用微服务进行重写,刚开始的 ...
 - 纯Socket(BIO)长链接编程的常见的坑和填坑套路
		
本文章纯属个人经验总结,伪代码也是写文章的时候顺便白板编码的,可能有逻辑问题,请帮忙指正,谢谢. Internet(全球互联网)是无数台机器基于TCP/IP协议族相互通信产生的.TCP/IP协议族分了 ...
 - NHiberante从.net framework转移到.net standard(.net core 2.2)时遇到的坑及填坑
		
在.net framework中的创建session代码先贴一个 public class SessionBuilder { private static ISessionFactory _sessi ...
 - html标签从.net framework转移到.net standard(.net core 2.2)时遇到的坑及填坑
		
在原来的.net framework mvc中html的标签可以使用下面的方法 <select class="form-control" id="categoryi ...
 - Java面试中遇到的坑【填坑篇】
		
看到大家对上篇<Java面试中遇到的坑>一文表现出强力的关注度,说明大家确实在面试中遇到了类似的难题.大家在文章留言处积极留言探讨面试中遇到的问题,其中几位同学还提出了自己的见解,我感到非 ...
 - pyinstaller打包pyqt5,从入坑到填坑,详解
		
以上省略pyinstaller安装步骤,直入主题.先分享我的心路历程. 1.pyinstaller -F -i 1.ico UI_Main.py (先在CMD中 cd到 py文件对应的路径) 第一步打 ...
 - 测者的测试技术手册:智能化测试框架EvoSuite的一个坑以及填坑方法
		
问题 最近在不断地学习和探索EvoSuite框架的时候,在生产JUnit单元测试框架后,出现如下问题: Exception: Caused by: org.evosuite.runtime.TooMa ...
 - .NetCore下使用IdentityServer4 & JwtBearer认证授权在CentOS Docker容器中运行遇到的坑及填坑
		
今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.Add ...
 - Cython的用法以及填坑姿势
		
因为项目需要,需要优化已有的Python代码.目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层.如果去掉指令解释这个阶段,直接进入C代码层, ...
 
随机推荐
- VUE 组件通信、传值
			
一.通过路由进行带参传值: 两个组件A和B,A组件通过query把orderId传递给B组件(触发事件可以是点击事件.钩子函数等) this.$router.push({path:'/componen ...
 - 关于numpy中的函数return中加入字符串类型数据后,小数点精度变化
			
weekdays.pyimport numpy as npfrom datetime import datetimedef datestr2num(s): return datetime.strpti ...
 - 20155312 张竞予 Exp2 后门原理与实践
			
Exp2 后门原理与实践 目录 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? (2)例举你知道的后门如何启动起来(win及linux)的方式? (3)Meterpreter有哪 ...
 - linux系统下部署DNS正向解析
			
DNS服务概述: DNS(Domain Name System)域名系统,能够提供域名与IP地址的解析服务. 正向解析 正向解析是指域名到IP 地址的解析过程. 部署DNS正向解析 DNS服务的三个配 ...
 - 织梦dedecms后台文章搜索关键字,关键字包含文章内容的代码修改
			
1.织梦dedecms后台文章搜索功能在哪里找?织梦dedecms后台-->核心-->常用操作-->所有档案列表(或)织梦dedecms后台-->核心-->内容管理--& ...
 - Win7 VS2017编译magnum及例子
			
magnum是一个开源的图形中间件 Lightweight and modular C++11/C++14 graphics middleware for games and data visuali ...
 - lsf运行lsload命令显示“lsload: Host does not have a software license”
			
因为这个问题也是花费好长时间了,对一个小白的我来说真的挺激动的.下面说一下我的解决思路吧.不过造成这个问题也有很多种原因,需要对症下药. 我入手解决是从这个网站上看到同样的问题,然后通过一个个排除最后 ...
 - JAVA主流日志梳理
			
JAVA主流日志梳理 引入 历史故事 Log4j - JDK1.3及以前 JUL - JDK1.4 JCL - 日志门面commons-logging的出现 SLF4j - 可能是最好的日志框架 lo ...
 - 利用openxml在Excel中插入图表
			
using System.Collections.Generic; using System.Linq; using DOD = DocumentFormat.OpenXml.Drawing; usi ...
 - sqoop错误集锦2
			
1.使用sqoop技术将mysql的数据导入到Hive出现的错误如下所示: 第一次使用命令如下所示: 1 [hadoop@slaver1 sqoop-1.4.5-cdh5.3.6]$ bin/sqoo ...