在上篇《基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作》介绍了如何在Enterprise Library的数据访问层上支持这种神秘的国产数据库-达梦数据库。本文继续这一主题,介绍产达梦数据库的结合Enterprise Library的应用开发。

1、达梦数据库还原处理

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是7.0版本,简称DM7。DM7提供对SQL92的特性支持以及SQL99的核心级别支持;支持多种数据库开发接口,包括OLE DB、ADO、ODBC、OCI、JDBC、Hibernate、PHP、PDO、DB Express以及.Net DataProvider等。

达梦数据库可以在(http://www.dameng.com/)上下载试用,安装好后提供很多管理工具,安装后可以让它创建一些实例数据库,以方便我们了解数据库的基本操作。

达梦数据库安装后,在系统开始菜单里面有一些管理工具和PDF文件链接,如下所示。有时间建议阅读下用户手册里面的几个文件,里面的文档写的还是很详细,覆盖数据库管理操作、数据库编程开发、数据库语法几部分的内容。

在Winform开发框架中,在框架源码目录DatabaseDx里面,提供了一个达梦数据库的备份文件(Winframwork.dmp),里面包含了框架所需的表和数据,使用框架前还原(导入)数据库即可。操作方法是在“DM管理工具”界面里面,左边的模式树上面右键出现【导入】功能,然后选择导入数据库操作,界面如下所示。

单击【导入】功能后,在弹出的界面上,选择对应的目录和数据库备份文件,并输入需要的模式名称即可,界面操作如下所示。

还原(导入)达梦数据库后,刷新模式树列表,则会在左边的模式看到新导入的数据库相关信息。

2、开发应用的扩展整合

基于Enterprise Library的开发框架,底层使用了微软的数据访问组件Enterprise Library,以适应多种数据库类型的操作,它的分层如下所示,每个DAL层(如DALSQL、DALOracle等)都提供了对应数据库的实现,界面层一下的分层图如下所示。

如果增加多一种数据库,那么我们增加多一个Enterprise Library的组件扩展类,并在业务数据模块里面增加对应的DAL层即可。

Enterprise Library实现其他数据库的支持,需要增加一个组件扩展类,如EntLibContrib.Data.SQLite是用来支持SQLite数据库的,EntLibContrib.Data.MySql是用来支持Mysql的,这个扩展类的内容也不多,主要是用来解析Enterprise Library扩展的配置内容的。

3、扩展支持的配置参数

在开发框架里面的启动程序或者WCF服务里面的Web.Config配置文件,我们看到如下的配置信息。

在配置文件里面,我添加了1、2、3个步骤,第1步是指达梦数据库的连接字符串,这个是基于Enterprise Library的连接参数内容,由于Enterprise Library默认并不支持达梦数据库的,是通过其扩展模块EntLibContrib.Data.Dm进行支持的,因此需要在第2步里面指定具体的扩展对象和程序集信息;最后为了在框架里面知道具体的数据库类型,在第3步增加了一个ComponentDbType的配置信息,用来确定是哪种数据库类型(因为框架支持多种数据库,需要明确类型,方便构建不同的查询语句语法)。

最后提及的是第3步里面的DM_Schema是达梦数据库的配置参数,因为达梦数据库需要指定具体的表的模式前缀。指定了这个参数,我们在数据库模块里面的表名,就可以统一使用这个配置的【模式】名称了,如我们可以在DALDm数据访问层里面,使用这个this.Schema的属性,这个属性的值就是通过上面的DM_Schema配置获取的。

当然,我们已经在数据访问层里面,为tableName增加了数据库模式前缀(相当于Schema.TableName);如果在DALDm层里面,使用了this.tableName这个参数,那么它已经内置包含了数据库模式的前缀,所以不需要在使用tableName的时候,还显示的增加模式的值,具体正确使用如下所示。

也就是说,如果使用this.tableName这个参数,那么当前表就不用增加模式前缀,否则为表名增加this.Schema这个属性前缀。

4、如何开发支持达梦数据库的应用

由于本文主要介绍如何整合达梦数据库,开发基于达梦数据库的业务应用,因此将重点介绍如何基于这个数据库进行的框架代码生成。

由于整个Enterprise Library的开发框架,在业务层及UI层,是不涉及具体的数据库处理的,因此这些特性让它能够很好提供多数据库的支持,我们基于这个原则,一般也不要打破这个约定,不要在UI层或者BLL层使用特定数据库的SQL。

为了快速开发框架代码,提供两种方式供快速生成数据访问层的代码,一种是基于其他数据库访问层的复制并修改处理,另一种是全新的数据访问层生成。前者是在其他数据访问层已经完成的情况下,可以快速复制并修改即可。后者这是开始增量开发业务,在代码生成工具Database2Sharp支持的基础上进行代码生成。

1)基于其他数据库访问层的复制处理

由于不同的数据库支持,是创建不同的数据访问层,如达梦数据库的数据访问层,一般为DALDm,如下图所示就是字典模块中的数据访问层代码。

上面我们看到,达梦数据库的数据访问层它的命名空间为WHC.Dictionary.DALDm这样的格式,前面部分为主命名空间,后面部分基本为约定的名称DALDm;而这个DictType数据访问类的基类这是继承了达梦数据库的数据访问基类BaseDALDm,这个做法和其他数据库类似。

我们看到,这个内容和SQLServer的数据访问层基本相同的,SQLServer的数据访问层代码如下所示。

对比我们可以看到,他们之间基本上一样的,如果我们在已经开发好了一种数据类型的实现基础上,在进行另外一种数据访问层的代码开发,我们就可以这样快速操作实现代码的复制、修改。

(1)  在VS里面按住Ctrl按键,并用鼠标进行拖动,复制一份副本,修改目录为DALDm。

(2)  在VS里面,关闭全部代码窗口,把复制生成的文件全部打开。

(3)  替换DALSQL为DALDm,这样每个类里面会替换两次内容,实现命名空间和基类名称的统一替换。

(4)  调整其他层对DALDm的引用关系。

重新编译代码即可。

2)全新的数据访问层生成

这种方式的代码生成,需要在代码生成工具里面,选择Enterprise Library架构生成,生成的代码把它们逐一复制到对应的目录,并调整相关的引用关系即可。

具体可以参考代码生成工具Database2Sharp的操作说明。

国产达梦数据库的结合Enterprise Library的应用开发的更多相关文章

  1. 基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作

    由于一个客户朋友的需求,需要我的Winform开发框架支持国产达梦数据库的操作,这个数据库很早就听过,但是真正一般项目用的很少,一般在一些特殊的项目可能需要用到.由于我的Winform开发框架,是基于 ...

  2. DB 查询分析器 6.03 如何灵活、快捷地操作国产达梦数据库

    DB 查询分析器 6.03 如何灵活.快捷地操作国产达梦数据库 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要       本文详细地介绍了"万能数据库查询分析器&qu ...

  3. .NETCore 访问国产达梦数据库

    前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...

  4. [开源] .Net 使用 ORM 访问 达梦数据库

    前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...

  5. 达梦数据库DM7小结

    除了很多主流的数据库,我们很熟悉之外,越来越多的国产数据库也涌现出来. 这次就小结一些有关武汉的达梦数据库7这个开发版数据库的有别或者需要注意的地方进行一个简单备注吧. 1.第一件大事就是下载.数据库 ...

  6. 国产化之银河麒麟安装达梦数据库DM8

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用DM8. 虽然在之前的文章中已经成功模拟国产飞腾处理器,但是运行效率不高,所以这里的银河麒麟操作系统还是运行在x64平台上 ...

  7. Shell脚本使用汇总整理——达梦数据库备份脚本

    Shell脚本使用汇总整理——达梦数据库备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html 脚本 ...

  8. Linux平台达梦数据库V7单实例安装方式之图形方式

    一 前言 我们在学习任何一个应用时,了解它的最初步骤通常是学会如何进行安装配置,后序才去关心如何使用,学习达梦数据库也是如此,而达梦数据库的安装提供了多种方式,接下来会一一介绍每种安装方式,达梦数据库 ...

  9. [转帖]达梦数据库(DM6)和ORACLE 10g的异同点

    达梦数据库(DM6)和ORACLE 10g的异同点    https://bbs.aliyun.com/detail/351337.html   花花浪子 级别: 小白 发帖 0 云币 -41 加关注 ...

随机推荐

  1. statcounter统计的浏览器市场占有率

      Source: StatCounter Global Stats - Browser Market Share

  2. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之纹理Textures

    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之纹理Textures 本篇分享一下第6个已完工的视频,即<beginner Graphics ...

  3. Lucene系列-索引文件

    本文介绍下lucene生成的索引有哪些文件组成,每个文件包含了什么信息.基于Lucene 4.10.0. 数据结构 索引(index)包含了存储的文档(document)正排.倒排信息,用于文本搜索. ...

  4. 中小公司PMO不一样期间的责任

    中小公司,又称中小型公司或中小企,它是与所在行业的大公司对比在人员规划.财物规划与运营规划上都对比小的经济单位.此类公司一般可由单自个或少数人供给资金构成,其招聘人数与营业额皆不大,因此在运营上多半是 ...

  5. WebApi系列~通过HttpClient来调用Web Api接口

    回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...

  6. Oracle使用小记

    windows下Oracle必须要启动的服务 Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service ...

  7. Atitit. Atiposter 发帖机 新特性 poster new feature v11  .docx

    Atitit. Atiposter 发帖机 新特性 poster new feature v11  .docx 1.1.  版本历史1 2. 1. 未来版本规划2 2.1. V12版本规划2 2.2. ...

  8. 不要怂,就是GAN (生成式对抗网络) (一)

    前面我们用 TensorFlow 写了简单的 cifar10 分类的代码,得到还不错的结果,下面我们来研究一下生成式对抗网络 GAN,并且用 TensorFlow 代码实现. 自从 Ian Goodf ...

  9. fir.im Weekly - 2016 开年技术干货分享

    开年上班,北上广的技术er 陆续重返"人间".看到别人已返工写代码,竟然有种慌慌的感觉(ง •̀_•́)ง 勤奋好学如你,fir.im weekly 送上最新一波技术分享供你 &q ...

  10. 阿里云上安装mysql步骤/ 阿里云ECS搭建Java+mysql+tomcat环境

    使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系 ...