.NET Core C#系列之EF Core与达梦DM数据库的使用教程

达梦数据库的简介就不写了,自己去官网搜索。

至于我为什么写这个教程,是因为工作中用到了,并且走了一些弯路。为了让大家少走弯路,就写个文章分享一下,反正也闲着无聊。

因工作中用到了abp vnext框架,且使用的ORM是EF Core使用的MySql数据库。

(abp vnext 默认就是支持efcore 的,所以切换达梦很顺利,就是有些字段类型,达梦兼容会出现一些问题)

abp 切换第三方的数据库传送地址:https://docs.abp.io/zh-Hans/abp/7.1/Entity-Framework-Core-Other-DBMS

当客户要求切换达梦数据库的时候,有点懵逼。这适配达梦数据库,网上也搜到的文章很少,一筹莫展之时,就去了达梦官网。https://eco.dameng.com/

嗯,官网文档很全。官网右上角也有下载按钮。

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第1张图片

这里我下载的是Windows版本的安装包。

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第2张图片

下载完,是一个zip压缩包。解压里面的文件。这个文件夹很全,数据库程序、可视化界面、迁移工具、各种编程语音对应的驱动程序等等都在里面。

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第3张图片

解压开之后,找到dotnet的驱动和efcore包。

~dm8_20230106_x86_win_64\dm8_20230106_x86_win_64\source\drivers\dotNet

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第4张图片

这个里面你找到对应的版本,就可以在代码里使用了。

使用起来也很麻烦,因为里面发布的dll、nuget包都是离线版本的,你也不能推送到nuget.org官网上去。因为【国产、安全】所以,一切的包工具都是离线版本。

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第5张图片

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第6张图片

此时你可以搭建一个私有的nuget管理服务,搭建教程微软文档有,别人写的也有。如果你是本地开发,可以使用另外一个快捷的办法。

打开你的 visual studio编辑器,找到你的nuget管理工具,点击右上角的设置图标。

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第7张图片

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第8张图片

添加一个私有的nuget包源头。

然后就可以在nuget上加载出你刚刚添加的nuget了。

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第9张图片

添加完毕后,就可以按照ef core的方式创建的你的model、dbcontext了。

然后使用 code first 创建库表结构。

efcore的三件套,安装一下,版本和你创建的保持一致

Microsoft.EntityFrameworkCore


Microsoft.EntityFrameworkCore.Tools


Microsoft.EntityFrameworkCore.Design

创建一个user类

public class User
    {
        public string Id { get; set; }
        /// 
        /// 姓名
        /// 
        public string Name { get; set; }
        /// 
        /// 年龄
        /// 
        public int? Age { get; set; }
        /// 
        /// 性别
        /// 
        public bool? Gender { get; set; }
        /// 
        /// 创建日期
        /// 
        public DateTime? CreateTime { get; set; }
    }

添加数据库上下文

namespace DmExample.DbContext
{
    /// 
    /// 达梦数据库上下文
    /// 
    public class DmContext : Microsoft.EntityFrameworkCore.DbContext
    {
        /// 
        /// 用户
        /// 
        public DbSet Users { get; set; }


        public DmContext(DbContextOptions options) : base(options)
        {
        }


        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);


            modelBuilder.Entity().ToTable("user");
        }
    }
}

配置数据库连接

打开项目中的appsettings.json配置文件:

{
  //...
  "ConnectionStrings": {
    "DmExample": "Server=你的IP地址;Database=数据库名字;User=账号;Password=密码;"
  }
}

注册数据库上下文

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    // 注册DbContext
    services.AddDbContext(options =>
  options.UseDm(Configuration.GetConnectionString("DmExample")));
}

创建数据库

add-migration init1

更新数据库命令

update-database

此时去数据库里,看看库表已经生成了。

达梦官方的ef core是有点小bug的,不过整体是可以使用的。

所谓的bug是时间格式化,必须按照达梦的来定义,否则就会报错。

dm.exception "&*(**&&"

就是这样的问题,我也在达梦论坛提了问题,人家说解决了,咱验证了,还是没有解决,不过整体还是可以使用的。

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第10张图片

.NET Core C#系列之EF Core与达梦DM数据库的使用教程_第11张图片

问题传送门:https://eco.dameng.com/community/question/d52ced27800e61e2b67b6f77c265cb55

不过,大家遇到问题,就在达梦官方提问题,让他们解决,这样我们ef core适配达梦才会更加强大。

好了,今天的分享就到这里,感谢大家的阅读。

你可能感兴趣的:(数据库,c#,.netcore,microsoft,开发语言)