TNBLOG
首页
博客
视频
资源
问答
猿趣
手机
关于
搜索
收藏
便签
笔记
消息
创作
登录
剑轩
人生没有办法假设,我们不能站在后来的角度去责备当时无望、甚至是怯懦、犹豫的自己
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
CSS
15篇
微服务
41篇
Git
14篇
.NET
102篇
移动开发
33篇
软件架构
23篇
.NET Core
118篇
.NET MVC
11篇
英语
3篇
随笔
82篇
Bootstrap
3篇
Redis
21篇
编辑器
10篇
Js相关
15篇
虚拟化
8篇
更多
Oracle
7篇
Python
14篇
数据库
26篇
EF
17篇
微信
3篇
前端
149篇
消息队列
6篇
docker
41篇
多线程
1篇
Java
4篇
软件基础
2篇
C++
2篇
WCF
7篇
Linux
7篇
nginx
5篇
K8S
9篇
ABP
2篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2023
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
原
abp vnext连接dm达梦数据库。.net core连接dm达梦数据库。ef core连接dm达梦数据库
3459
人阅读
2023/2/25 19:48
总访问:
3511560
评论:
2
收藏:
0
手机
分类:
.NET Core
突然有一天客户说把数据库换成国产的dm达梦数据库,网上搜了一下这数据库的资料太少了,还是要自己摸索!国产数据库还需要时间沉淀。 <img src="https://img.tnblog.net/arcimg/aojiancc2/476a37b5770540b392621857a e9d398b.jpg" width="100px"> 当然要先安装dm数据库,这块就不说了,注意一下里边的用户,模式这些等待,和oracle比较像,用户、模式这些没有搞好,你连表都查询不了。`迁移之后如果有问题要特别注意达梦数据库里边的配置` ### 一:下载库 直接搜索:  或者使用命令下载 ``` <PackageReference Include="EFCore.Dm" Version="5.0.1" /> ``` 还好官方现在把ef驱动上传到了nuget上面,以前是只有安装数据库的时候找驱动 ### 二:在基础设施层中的orm框架ef的模块中配置好使用dm数据库 直接在Configure去配置UseDm是不行的,因为现在abp官方还没有支持对dm数据库的支持,所以还没有Volo.Abp.EntityFrameworkCore.DM这种扩展库。 ``` Configure<AbpDbContextOptions>(options => { options.UseSqlServer(); }); ``` 我们使用非封装的配置方法去集成其他DMBS行了,比如这里的DM数据库 ``` Configure<AbpDbContextOptions>(opt => { opt.Configure(ex => { ex.DbContextOptions.UseDm(ex.ConnectionString); // opts.UseSqlServer(); // opts.UseMySQL(); }); //opt.UseSqlServer(); //opt.UseMySQL(); }); ``` 还可以检查当前请求中是否存在到相同数据库的现有(活动)连接,并在可能的情况下重用它. 这允许在不同的DbContext类型之间共享单个事务. ABP处理其余的事情. 如果没有活动的连接,它将把 ctx.ConnectionString 传递给UseDm(这将创建新的数据库连接) ``` Configure<AbpDbContextOptions>(options => { options.Configure(ctx => { if (ctx.ExistingConnection != null) { ctx.DbContextOptions.UseDm(ctx.ExistingConnection); } else { ctx.DbContextOptions.UseDm(ctx.ConnectionString); } }); }); ``` ### 三:数据库迁移 只在模块类中修改了,数据库还没有迁移过去。我们需要重写一下IDesignTimeDbContextFactory让我们数据库迁移到dm数据库去。 ``` namespace WY.JBLand.EntityFrameworkCore { /* This class is needed for EF Core console commands * (like Add-Migration and Update-Database commands) */ public class WyJBLandDbContextFactory : IDesignTimeDbContextFactory<WyJBLandDbContext> { public WyJBLandDbContext CreateDbContext(string[] args) { //BookStoreEfCoreEntityExtensionMappings.Configure(); var configuration = BuildConfiguration(); //方法1: string conn = configuration.GetConnectionString("conn_mysql"); //方法2: //string conn_mysql = configuration["ConnectionStrings:conn_mysql"]; //AddTestLog(conn); //var builder = new DbContextOptionsBuilder<WyJBLandDbContext>() // .UseMySql(conn, ServerVersion.AutoDetect(conn)); var builder = new DbContextOptionsBuilder<WyJBLandDbContext>() .UseDm(conn); return new WyJBLandDbContext(builder.Options); } private static IConfigurationRoot BuildConfiguration() { var builder = new ConfigurationBuilder() .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../WY.JBLand.API/")) .AddJsonFile("appsettings.json", optional: true); return builder.Build(); } } } ``` 具体参考:abp vnext连接mysql https://www.tnblog.net/aojiancc2/article/details/7311 **然后在把连接字符串配置一下,配置成dm数据库的。然后把以前使用mysql数据库下的迁移记录全部都干掉,在执行迁移命令 ** 执行迁移命令: ``` Add-Migration 迁移记录名称 ``` 更新到数据库 ``` Update-Database ``` 成功后你就可以在dm数据库里边看到所有项目中用到的表了。ef迁移命令详解参考: https://www.tnblog.net/aojiancc2/article/details/5370
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}