如何快速学会使用人大金仓EF Core 6.x进行数据库操作?

摘要:前言 目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql、SqlSugar(排名不分先后)。FreeSql和SqlSugar都已早早支持国产数据库比如人大金
前言 目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql、SqlSugar(排名不分先后)。FreeSql和SqlSugar都已早早支持国产数据库比如人大金仓、神通、达梦,要是项目要求支持适配国产数据库中,同时项目若早已使用上如上两种ORM框架,那并可以很愉快的玩耍了,要是使用EF Core就有点伤脑筋,只能自主写一套适配 十分钟对接人大进仓驱动 此文只是以最新版本作为示例,任意版本都可快速适配完人大金仓,基于我大国产数据库收费,当然就有技术支持,大可催官方出EF Core 5.x、6.x,当项目进行框架升级,但等不及官方出迭代版本,出完后,可能还需要当当小白鼠试验一番,本文未尝不是一条先行之道 通过官网仅提供V8 R6版本,所以下载其windows版本,最终可看到提供了对应不同版本的驱动 但是呢,EF Core版本仅为2.2.4,要是EF Core为3.1.x版本过高,当你调试时你会发现有异常,反编译其dll,其实里面有一部分方法并未实现,换句话说,在较高版本上底层EF Core做了实现,但2.2.4适配版本并未实现。我们用到的则是如下两个dll,第一个驱动作为程序集引用,另外一个则是适配EF Core 对EF Core还算有点熟悉,适配EF Core无非就三步走策略 1、基础设施:Microsoft.EntityFrameworkCore 2、关联映射:Microsoft.EntityFramework.Relational 3、数据迁移:Microsfot.EntityFramwork.Design 上面前两步是必要条件,至于最后一步看项目是否用到迁移,没用到可无需引入。讲到这里,你以为我准备自主实现这一套吗?不存在的,有捷径不走为何非得装个b勒!到其底层借鉴于PS,于是乎我下载efcore.pg6.0.1版本 1、根据自身需要:如上删除没必要的包,什么测试项目啊,支持对日期转换插件等等啊(实际只需要EFCore.PG)其结构与EF Core源码一毛一样 2、归纳演绎法: 人大金仓适配EF Core命名Kdbndp.EntityFrameworkCore.KingbaseES,是否找到等同规律!我们将Npgsql全局替换为Kdbndp,同理将PostgreSQL全局替换为KinbaseES 对于异常处理,PostgresException全局替换为KingbaseException,系统数据库pg_全局替换为sys_(不替换也没问题,主要用于数据库表迁移,若用到迁移,就必须替换)。
阅读全文