【导读】目前.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无非就三步走策略

基础:Microsoft.EntityFrameworkCore

映射:Microsoft.EntityFramework.Relational

迁移:Microsfot.EntityFramwork.Design

上面前两步是必要条件,至于最后一步看项目是否用到迁移,没用到可无需引入

讲到这里,你以为我准备自主实现这一套吗?不存在的,有捷径不走为何非得装个b勒!到其底层借鉴于PS,于是乎我下载efcore.pg 6.0.1版本

1、根据自身需要:如上删除没必要的包,什么测试项目啊,支持对日期转换插件等等啊(实际只需要EFCore.PG)其结构与EF Core源码一毛一样

2、归纳演绎法:

人大金仓适配EF Core命名Kdbndp.EntityFrameworkCore.KingbaseES,是否找到等同规律!我们将Npgsql全局替换为Kdbndp,同理将PostgreSQL全局替换为KinbaseES

对于异常处理,PostgresException全局替换为KingbaseException,系统数据库pg_ 全局替换为sys_(不替换也没问题,主要用于数据库表迁移,若用到迁移,就必须替换)

接下来则是将底层驱动Npgsql.dll替换为Kdbndp.dll,比较正规放到驱动文件夹中

将EFCore.PG项目文件中底层库,给移除,然后引用上述驱动文件夹程序集

生成解决方案,错误基本也就那么几十个而已(大多数错误来源于资源文件加载),根据实际情况修改修改没啥大问题,比如Npgsql底层驱动做了额外扩展,但对人大金仓而言(比如映射)则没有,就删除对应属性等等

若使用VS 2022生成解决方案时,加载资源文件时可能会出现如下错误

DTE”同时存在于“EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”和“Microsoft.VisualStudio.Interop, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中

此时需要将/tools/Resources.tt打开,将如下

<#@ assembly name="EnvDTE" #>

指定本地该程序集实际目录(可能有根本上的解决方案)

<#@ assembly name="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\PublicAssemblies\envdte.dll" #>

最后将EF.PG类库生成程序集名指定为人大金仓所提供程序集名称

小小测试一下执行查询并翻译sql语句

弱弱透露下,官方现仅提供R6,据悉针对R3版本貌似不再迭代更新,据我猜测可能是其底层基于PG,部分功能没有“借鉴”完,如下特性则是R3对应的Kdbndp.dll

人大金仓虽基于PG,但更专注于数据分析方向以及物联网等领域助力于我国信息化建设和发展,个人认为还是很值得鼓励的

针对.NET 6基于Npgsql移植适配人大金仓稍微麻烦一丢丢,而对于.NET Core 3.x或5.x则简单很多,相关命名空间替换基本没啥错误,好了,这条捷径你get到了?

此处是不是应该艾特下官方做适配的小伙伴,无需过多折腾,直接借鉴npgsql适配,是不是更快呢!

教你10分钟对接人大金仓EF Core 6.x相关推荐

  1. 人大金仓windows 10 安装闪退,改绿色安装方法,

    最近使用人大金仓v8windows版安装发现安装在选择授权时直接闪退使其无法完整安装只能装客户端,经过研究终找到中级解决方法 ,故记录一下 首先从一个已经安装成功的并能正常使用的电脑上将整个文件夹复制 ...

  2. 再现“换桥奇迹”|人大金仓助力大型运营商完成营销系统国产化升级

    堪称传统基建奇迹的"三元桥43小时换新桥"工程的相关报道还历历在目,而某运营商也经历着类似的考验,需要在2天内完成某在线营销系统整体升级. 作为某运营商的重要数据库产品与服务提供商 ...

  3. 技术干货 | 人大金仓KFS基于分区索引的分片入库技术解析

    在之前的文章<技术干货:人大金仓KFS精准过滤和分片并行入库技术解析>中,KFS利用分片并行入库技术,解决了某金融POC数据同步项目中数据入库持续积压问题.经过优化后,在200并发的压测场 ...

  4. 数据库sql去重操作 + 人大金仓案例

    背景:一般在增量导入数据后,表中会出现冗余的数据,因此对于表的去重操作主要分为两种:去重查询以及删除重复数据 去重查询 distinct 关键字 select distinct <col1, c ...

  5. 极致性能,人大金仓KES为证券业务加速

    2021年3月,国家发布<中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要>,纲要明确提出"稳妥发展金融科技,加快金融机构数字化转型".&quo ...

  6. nacos 适配达梦、人大金仓数据库

    文章目录 一.准备工作 1. 阅读官网文档 2. 下载源码,按官网更详细 3. 下载达梦.人大金仓数据库驱动 二.修改nacos源码 2.1. 引入驱动依赖 2.2. 引用数据库 2.3. 修改配置 ...

  7. jpa 人大金仓数据库方言_国产数据库的春天,人大金仓完成近亿元融资

    近日,人大金仓宣布完成近亿元融资.本次融资原股东太极股份等追加增资,同时引入战略投资方:电科研投.南威软件与东华软件,总融资额近亿元. 持续加码产品研发与市场拓展 本次融资将助力人大金仓持续加码产品研 ...

  8. 要闻 | 人大金仓重磅亮相2022南京软博会

    "软件赋能 数智转型",2022中国(南京)国际软件产品和信息服务交易博览会(下称"南京软博会")于11月23至25日顺利举行.人大金仓重磅亮相本次展会,并受邀 ...

  9. BDTC 2017数据库:犹他大学、东方国信、蚂蚁金服、微软、人大金仓畅谈数据库发展与实践...

    [CSDN现场报道]12月7-9日,由中国计算机学会主办,CCF 大数据专家委员会承办,中国科学院计算技术研究所.中科天玑数据科技股份有限公司.CSDN协办的2017中国大数据技术大会(BDTC 20 ...

最新文章

  1. python 全局变量 局部变量
  2. python基础学习(五)第一次修改
  3. 决策树---ID3算法
  4. 主题:Spring注解入门(转载)
  5. 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
  6. linux内核串口调试,linux 串口调试方法
  7. python数据分析-为什么Python对大数据分析那么很重要?
  8. 手机万能摄像头ip搜索工具_一款 APP,130 多种功能,让你的手机秒变万能工具箱...
  9. 局域网桌面共享软件(Java版)
  10. web前端学习(总结/心得)
  11. 冯乐乐之三,SHADERLAB入门
  12. HTML 中划线 、 下划线 、上划线
  13. Java使用while循环计算调和数列的和并打印
  14. 福州铁通DNS是多少
  15. cdr怎么抠图轮廓线条_CDR怎么抠图?CorelDRAW快速抠图方法
  16. 16083001(古墓丽影GPA)
  17. java获取键盘整数_Java中从键盘输入多个整数的方法
  18. un直连服务器教程,unRAID下使用Docker部署iCloud直连相片备份服务
  19. 微信不会把关注取消事件推送给服务器,微信公众平台开发关注及取消关注事件的方法...
  20. android开发图案解锁,Android开发中图案解锁完整版

热门文章

  1. python pysnmp使用
  2. javascript与xml实例应用
  3. java gui框架_推荐!程序员整理的Java资源大全
  4. 单片机按键防抖程序_这些单片机按键设计方案,请拿好,不谢!
  5. JavaScript的10种跨域共享的方法
  6. Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)阅读笔记
  7. Flask Web表单
  8. socket编程学习笔记
  9. 一头扎进Node(三) - File System
  10. php基础系列:从用户登录处理程序学习mysql扩展基本操作