使用EFCore连接达梦数据库

为了快速验证EFCore连接达梦数据库,执行简单的查询语句,以下通过控制台程序来测试。
这里的Demo项目,是比较早之前新建的,框架版本是.net6.0。
1、项目添加EFCore和DM数据库的nuget包,添加成功之后查看项目文件的包引用(这里用到的是和6.0匹配的版本,其他版本相应升级依赖包即可)
<PackageReference Include="DM.DmProvider" Version="8.3.1.25526" />
<PackageReference Include="DM.Microsoft.EntityFrameworkCore" Version="6.0.0.20604" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.33" />
2、添加DmDbContext的简单实现(只是Demo验证使用)
public class DmDbContext : DbContext
{
    public DmDbContext(DbContextOptions<DmDbContext> options) : base(options) { }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseDm("Server=localhost;Port=5236;Uid=DB1;Pwd=DB1123456;");
        base.OnConfiguring(optionsBuilder);
    }

    public DbSet<Job> JobSet { get; set; }
}

3、添加实体类代码,这里用的的DM内置的表JOB来测试

 [Table("JOB")]
 public class Job
 {
     [Key]
     [Column("JOB_ID")]
     public string Id { get; set; }

     [Column("JOB_TITLE")]
     public string Title { get; set; }

     [Column("MIN_SALARY")]
     public int? MinSalary { get; set; }

     [Column("MAX_SALARY")]
     public int? MaxSalary { get; set; }
 }

4、控制台程序入口,Program.cs代码片段

static void Main(string[] args)
 {
     //测试代码,实际使用不建议

     var dbContext = new DmDbContext(new DbContextOptions<DmDbContext>());
     var query = dbContext.JobSet.AsNoTracking().Where(p => p.Id == "11");
     var job = query.FirstOrDefault();
}

5、总结

网上有很多版本,经验证只要按格式“Server=localhost;Port=5236;Uid=DB1;Pwd=DB1123456;”去配置就可。
DM数据库和MySql,SqlServer等数据库在链接字符串的配置语法上有些不同,开始会习惯去设置默认的数据库用Database=xxx语法。
但是实际查询执行时,会返回异常提示“无效的表或视图名[JOB]”。
这里就需要查看配置的用户名DB1的命名空间下,是否存在JOB这个表。只有在用户名DB1的空间下的表,查询才能正常执行。
如果要用DB1的用户名,查询指定命名空间下的表,链接字符串加上scheme=xxx的配置。
posted @ 2024-08-18 22:45  Code_Song  阅读(1437)  评论(2)    收藏  举报