

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

突然有一天客户说把数据库换成国产的dm达梦数据库,网上搜了一下这数据库的资料太少了,还是要自己摸索!国产数据库还需要时间沉淀。
当然要先安装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。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
叼着奶瓶逛酒吧
文章写得真心不错,加油哈![[赞]](http://www.tnblog.net/content/static/layui/images/face/56.gif)