应无所住,而生其心
排名
21
文章
27
粉丝
11
评论
12
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

abp vnext连接dm达梦数据库。.net core连接dm达梦数据库。ef core连接dm达梦数据库

8767人阅读 2023/2/25 19:48 总访问:5182490 评论:2 收藏:0 手机
分类: .NET Core

突然有一天客户说把数据库换成国产的dm达梦数据库,网上搜了一下这数据库的资料太少了,还是要自己摸索!国产数据库还需要时间沉淀。

当然要先安装dm数据库,这块就不说了,注意一下里边的用户,模式这些等待,和oracle比较像,用户、模式这些没有搞好,你连表都查询不了。迁移之后如果有问题要特别注意达梦数据库里边的配置

一:下载库

直接搜索:

或者使用命令下载

  1. <PackageReference Include="EFCore.Dm" Version="5.0.1" />

还好官方现在把ef驱动上传到了nuget上面,以前是只有安装数据库的时候找驱动

二:在基础设施层中的orm框架ef的模块中配置好使用dm数据库

直接在Configure去配置UseDm是不行的,因为现在abp官方还没有支持对dm数据库的支持,所以还没有Volo.Abp.EntityFrameworkCore.DM这种扩展库。

  1. Configure<AbpDbContextOptions>(options =>
  2. {
  3. options.UseSqlServer();
  4. });

我们使用非封装的配置方法去集成其他DMBS行了,比如这里的DM数据库

  1. Configure<AbpDbContextOptions>(opt =>
  2. {
  3. opt.Configure(ex =>
  4. {
  5. ex.DbContextOptions.UseDm(ex.ConnectionString);
  6. // opts.UseSqlServer();
  7. // opts.UseMySQL();
  8. });
  9. //opt.UseSqlServer();
  10. //opt.UseMySQL();
  11. });

还可以检查当前请求中是否存在到相同数据库的现有(活动)连接,并在可能的情况下重用它. 这允许在不同的DbContext类型之间共享单个事务. ABP处理其余的事情.
如果没有活动的连接,它将把 ctx.ConnectionString 传递给UseDm(这将创建新的数据库连接)

  1. Configure<AbpDbContextOptions>(options =>
  2. {
  3. options.Configure(ctx =>
  4. {
  5. if (ctx.ExistingConnection != null)
  6. {
  7. ctx.DbContextOptions.UseDm(ctx.ExistingConnection);
  8. }
  9. else
  10. {
  11. ctx.DbContextOptions.UseDm(ctx.ConnectionString);
  12. }
  13. });
  14. });

三:数据库迁移

只在模块类中修改了,数据库还没有迁移过去。我们需要重写一下IDesignTimeDbContextFactory让我们数据库迁移到dm数据库去。

  1. namespace WY.JBLand.EntityFrameworkCore
  2. {
  3. /* This class is needed for EF Core console commands
  4. * (like Add-Migration and Update-Database commands) */
  5. public class WyJBLandDbContextFactory : IDesignTimeDbContextFactory<WyJBLandDbContext>
  6. {
  7. public WyJBLandDbContext CreateDbContext(string[] args)
  8. {
  9. //BookStoreEfCoreEntityExtensionMappings.Configure();
  10. var configuration = BuildConfiguration();
  11. //方法1:
  12. string conn = configuration.GetConnectionString("conn_mysql");
  13. //方法2:
  14. //string conn_mysql = configuration["ConnectionStrings:conn_mysql"];
  15. //AddTestLog(conn);
  16. //var builder = new DbContextOptionsBuilder<WyJBLandDbContext>()
  17. // .UseMySql(conn, ServerVersion.AutoDetect(conn));
  18. var builder = new DbContextOptionsBuilder<WyJBLandDbContext>()
  19. .UseDm(conn);
  20. return new WyJBLandDbContext(builder.Options);
  21. }
  22. private static IConfigurationRoot BuildConfiguration()
  23. {
  24. var builder = new ConfigurationBuilder()
  25. .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../WY.JBLand.API/"))
  26. .AddJsonFile("appsettings.json", optional: true);
  27. return builder.Build();
  28. }
  29. }
  30. }

具体参考:abp vnext连接mysql
https://www.tnblog.net/aojiancc2/article/details/7311

然后在把连接字符串配置一下,配置成dm数据库的。然后把以前使用mysql数据库下的迁移记录全部都干掉,在执行迁移命令
执行迁移命令:

  1. Add-Migration 迁移记录名称

更新到数据库

  1. Update-Database

成功后你就可以在dm数据库里边看到所有项目中用到的表了。ef迁移命令详解参考:
https://www.tnblog.net/aojiancc2/article/details/5370


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

叼着奶瓶逛酒吧

2019/4/23 15:24:22

文章写得真心不错,加油哈[赞]

EF多种更新方法。EF修改,Entity Framework修改。abp vnext ef 更新封装

[TOC] 方法1:直接执行更新的sql语句过于简单不说了 方法2:先查询在更新Users result = oapEntities.Users.Where(a =&gt...

EF添加。Entity Framework添加。abp vnext ef 添加,批量添加的封装

EF的添加如下,代码比较添加: ShipEntities se = new ShipEntities(); se.Users.Add(user); se.SaveChanges(); 方法2:...

领域驱动设计DDD abp vnext 一:项目架构搭建,模块使用

[TOC]用户接口层改造nuget中下载abp依赖VoLo.Abp.AspNetCore.Mvc ItemGroup添加方式 &lt;ItemGroup&gt; &lt;Packa...

abp vnext ObjectMapper 为空

abp vnext ObjectMapper 报空引用的错。System.NullReferenceException:“Object reference not set to an instance of an ...

领域驱动设计DDD abp vnext 二:使用仓储

[TOC]领域驱动设计仓储介绍在领域层和数据映射层之间进行中介,使用类似集合的接口来操作领域对象.” (Martin Fowler)。 实...

abp vnext 通用仓储,操作空引用。abp vnext 仓储报错,仓储为空。依赖注入报错

An internal error occurred during your request! abp vnext 通用仓储依赖注入拿到为空,或者能正常拿到依赖注入操作空引...

领域驱动设计DDD abp vnext 三:领域模型 之 失血模型,贫血模型,充血模型,胀血模型

[TOC]领域模型分为:失血模型,贫血模型,充血模型,胀血模型。 一、失血模型传统的三层架构,实体对象就是简单的POJO或者...

abp vnext连接mysql。.net core连接mysql。ef core连接mysql

增加一个MySQL的库:Volo.Abp.EntityFrameworkCore.MySQL &lt;PackageReference Include=&quot;Volo.Abp.EntityFrameworkCo...

abp vnext ef core连接mysql报空引用错,连接sqlserver报空引用错。abp vnext 的坑

使用abp vnext 真的太喜欢报空引用的错了。你报点错给一点具体的错不行么,这样搞起让人去猜太坑了,比如前面的auto_fac没...

abp vnext项目结构分析

Domain 项目领域层,领域驱动开发的核心层。 它主要包含 实体, 集合根, 领域服务, 值类型, 仓储接口 和解决方案的其他领域...

abp vnext 实体的guid主键

Guid主键的实体如果你的实体Id类型为 Guid,有一些好的实践可以实现: 创建一个构造函数,获取ID作为参数传递给基类.— 如...

abp vnext 获取配置文件

代码如下: public override void ConfigureServices(ServiceConfigurationContext context) { var services = cont...

abp vnext验证

验证DTO微软官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/validation?view=aspnetcore-7.0 数据注...

abp vnext 通用仓储 ef core。WhereIf,多条件,动态条件,分页,动态排序等

abp vnext 通用仓储 ef core WhereIf,多条件,分页等public async Task&lt;List&lt;LandInfoDto&gt;&gt; GetListAsync(Pag...

abp vnext 事务,多表查询,自定义仓储

[TOC]abp vnext 中的通用仓储主要是封装的单表操作,如果是实现事务的话最好还是封装一个自定义仓储。 自定义仓储大概的结...

abp vnext导航属性,级联查询。abp vnext 通用仓储 级联查询不到数据。abp vnext 多表查询,join

使用abp vnext的导航属性做级联查询,当然你可以使用自定义仓储,直接用原生的ef来写,也很简单方便abp vnext自定义仓储里...