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)的更多相关文章

  1. MVC5项目转.Net Core 2.2学习与填坑记录(1)

    流程都是自己摸索,错误地方随便指正... 老项目过于臃肿,并且所有请求都是提交到一个api中,这样当api挂掉的时候,基本所有的项目都瘫痪掉了. 在4月底的时候,下决心将项目用微服务进行重写,刚开始的 ...

  2. 纯Socket(BIO)长链接编程的常见的坑和填坑套路

    本文章纯属个人经验总结,伪代码也是写文章的时候顺便白板编码的,可能有逻辑问题,请帮忙指正,谢谢. Internet(全球互联网)是无数台机器基于TCP/IP协议族相互通信产生的.TCP/IP协议族分了 ...

  3. NHiberante从.net framework转移到.net standard(.net core 2.2)时遇到的坑及填坑

    在.net framework中的创建session代码先贴一个 public class SessionBuilder { private static ISessionFactory _sessi ...

  4. html标签从.net framework转移到.net standard(.net core 2.2)时遇到的坑及填坑

    在原来的.net framework mvc中html的标签可以使用下面的方法 <select class="form-control" id="categoryi ...

  5. Java面试中遇到的坑【填坑篇】

    看到大家对上篇<Java面试中遇到的坑>一文表现出强力的关注度,说明大家确实在面试中遇到了类似的难题.大家在文章留言处积极留言探讨面试中遇到的问题,其中几位同学还提出了自己的见解,我感到非 ...

  6. pyinstaller打包pyqt5,从入坑到填坑,详解

    以上省略pyinstaller安装步骤,直入主题.先分享我的心路历程. 1.pyinstaller -F -i 1.ico UI_Main.py (先在CMD中 cd到 py文件对应的路径) 第一步打 ...

  7. 测者的测试技术手册:智能化测试框架EvoSuite的一个坑以及填坑方法

    问题 最近在不断地学习和探索EvoSuite框架的时候,在生产JUnit单元测试框架后,出现如下问题: Exception: Caused by: org.evosuite.runtime.TooMa ...

  8. .NetCore下使用IdentityServer4 & JwtBearer认证授权在CentOS Docker容器中运行遇到的坑及填坑

    今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.Add ...

  9. Cython的用法以及填坑姿势

    因为项目需要,需要优化已有的Python代码.目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层.如果去掉指令解释这个阶段,直接进入C代码层, ...

随机推荐

  1. Atom使用

    cmd-r 通过方法名查找 ctrl-option-g 跳转至光标所在方法或结构 安装 last-cursor-position 后 alt-- 返回至光标上一次所在位置

  2. Mac OS mysql数据库安装与初始化

    一.官网下载mysql 二.安装并启用 三.数据库初始化 192:bin zhuyajing$ ./mysql -u root -p Enter password: Welcome to the My ...

  3. eclipse遇到启动报an error has occurred see the log file错

    错误: 修改eclipse安装目录下比如D:\eclipse\configuration\.settings\org.eclipse.ui.ide.prefs, 删除 RECENT_WORKSPACE ...

  4. Git和Eclipse的使用、上传、部署

    https://www.jianshu.com/p/812717c740a2 https://blog.csdn.net/lynn_Kun/article/details/73740400 https ...

  5. FFMPEG增加和提取字幕流

    转自 https://www.cnblogs.com/satng/p/5514683.html 防抽复制一遍 增加字幕流ffmpeg -i video.avi -i sub.ass -map 0:0 ...

  6. Notes on Operating System

  7. IE兼容问题 动态生成的节点IE浏览器无法触发

    ie下click()不能操作文档中没有的节点,所以你可以在click()前添加下面的语句 document.body.appendChild( input ); input.style.display ...

  8. 【python-appium】Appium的一些坑问题错误解决 与 技巧集锦

    问题 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was ...

  9. 使用Calibre自带工具批量转换电子书格式

    原来使用Calibre转换电子书格式都是先导入,再转换,再把转换后的文件复制出来,最后再改名. 虽然可以批量导入和转换,但复制和改名要一个处理.后来发现Calibre自带命令行转换工具,就写了一个批处 ...

  10. Python学习过程中各个难点---函数篇

    对于函数,我一直分不清局部变量与全局变量,今天又好好研究了下,终于搞清楚了. 例子: 其次对于global这个关键字我也是一知半解的状态,之前整个人都是懵懵的,现在搞明白了 匿名函数: 匿名函数使用关 ...