为了快速验证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