首页 > 数据库 >使用EFCore连接达梦数据库

使用EFCore连接达梦数据库

时间:2024-08-18 22:50:41浏览次数:11  
标签:set get 数据库 JOB EFCore DB1 public 达梦

为了快速验证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的用户名,查询其他命名空间下的表,如何配置?

标签:set,get,数据库,JOB,EFCore,DB1,public,达梦
From: https://www.cnblogs.com/luoqingsong/p/18366232

相关文章