经过DCA的培训学习之后对达梦数据库的安装部署,基础知识和常用的操作已经了然于胸。那么作为一名.Net开发人员,我迫不及待想研究一下用目前比较流行的EFCore如何配置连接DM8数据库。
驱动安装
为了能够连接数据库,我们首先要使用NuGet包管理工具,安装Entity Framework Core相关的包,这三个包没有什么版本的要求,只要保持三个版本一致即可,我在这里选择了EFCore3.1版本:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Design
安装完以上包后,接下来就需要安装EF Core的达梦数据库驱动,这里注意一下,达梦DM8数据库基于Entity Framework Core 3.1 的驱动在NuGet官方源上并没有正式发布。这个时候我们可以从DM8安装目录drivers/dotNet下找到达梦官方提供的各个.Net版本所对应的驱动程序。这里我们根据EFCore的版本选择EFCore.Dm3.1这个文件夹下的dll。
找到驱动之后,需要对NuGet包管理器的程序包源进行添加设置,将达梦数据库安装源中的EFCore.Dm3.1 + DmProvider这两个驱动作为包源引入,然后再安装。
在NuGet包管理器中,点击右上角(红框框起来的齿轮图标)。
弹出选项窗口,点击窗口右上角的加号图标,名称输入EFCore.Dm3.1,源路径:drivers\dotNet\EFCore.Dm3.1。
将DmProvider包源用一样的方法引入,源路径:drivers\dotNet\DmProvider。
两个Nuget程序包源安装完成后,退回NuGet包浏览列表页面,然后选择程序包源EFCore.Dm3.1,在浏览面板中会显示达梦的EntityFramework Core的驱动包,选择它直接点击“安装”即可。
最后,选择程序包源DmProvider,在浏览面板中安装达梦的DmProvider的驱动包。
这里我遇到了一个问题,就是在NuGet包源上可以搜索到DmProvider 2.0版本的包,而且版本高于我们当前的本地版本,但是我试用了一下这个包并不能正常连接DM8数据库。仔细看了下这个包,原来是基于.NetFramework版本的,于2017年9月7日发布,不适用于Core版本。
开发的小伙伴们可以根据自己的项目需求,选择最适合自己的驱动,不过我还是推荐使用官方安装目录下的驱动程序,达梦官方的文档和下载还是更新的比较快的,NuGet可能更新的没有那么及时。
添加数据库上下文
当我们配置好驱动之后,接下来在项目中添加DbContext目录,在目录中添加一个名为DmContext.cs的类作为达梦数据库上下文,具体代码如下:
/// <summary>
/// 达梦数据库上下文
/// </summary>
public class DmContext : Microsoft.EntityFrameworkCore.DbContext
{
/// <summary>
/// 用户
/// </summary>
public DbSet<User> Users { get; set; }
public DmContext(DbContextOptions<DmContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("sys_user");
}
}
DmContext继承了Microsoft.EntityFrameworkCore.DbContext,添加用户User的DbSet,重载OnModelCreating方法,将用户User模型与达梦数据库的SYS_USER表建立映射关系,如果不指定映射关系,默认将映射成Users数据表。
添加数据库连接字符串
打开项目中的appsettings.json文件,配置数据库连接字符串,如下所示:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DmExample": "Server=localhost;Database=DmExampleDB;User=SYSDBA;Password=111111;"
}
}
这一步是在appsettings.json配置文件里增加了一个ConnectionStrings的配置项,这个配置项用来设置数据库连接字符串。连接字符串名称是DmExample,这个字符串配置的风格是和SQLServer非常像的,Server表示数据库地址、Database表示数据库名称、User和Password就更好理解了,是连接数据库账号和密码。
但是达梦数据库连接字符串不支持Server=.来表示本地地址,需要替换成localhost或者127.0.0.1都行。
注册数据库上下文
配置好数据库连接字符串后,只要在Starup.cs类中注册当前的数据库上下文,在 .NetCore框架中,微软已经提供现成的上下文注册的中间件,只要调用它就可以了,具体代码如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
// 注册DbContext
services.AddDbContext<DmContext>(options =>
options.UseDm(Configuration.GetConnectionString("DmExample")));
}
其中,DmContext是咱们创建的达梦数据库上下文,DmExample是我们在appsettings.json配置文件中添加的数据库连接字符串,通过Configuration.GetConnectionString方法获取该数据库连接字符串。
解释一下options.UseDm,使用不同的数据库需要对应的数据库驱动,UseDm就是由达梦数据库驱动提供的方法,我们连接SqlServer数据库的时候是使用options.UseSqlServer,如果我们以后连接MySql数据库时是使用options.UseMySQL,至此数据库的连接我们已配置完成。
文章
阅读量
获赞