在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动
由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等数据库进行代码的快速生成。在此之前我一直要求用户使用代码生成工具的时候,如果使用Oracle开发,则需在开发环境中安装Oracle客户端,以便继续利用微软的System.Data.OracleClient方式访问Oracle,不过这样开发环境就会麻烦一些。另外还带来一个问题,使用这些驱动的时候,由于系统的限制,还会区分32位或者64位的问题,不能实现兼容性的访问。为了彻底解决这个问题,我们使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动。
1)代码生成工具介绍
Database2Sharp是一款代码生成工具和数据库文档生成工具,该工具从2005年开始至今,一直伴随着我们的客户和粉丝们经历着过各种各样的项目开发,在实际开发中能带来效率的提高及编程的快乐。
Database2Sharp是一款主要用于C#代码生成以及数据库文档生成的工具,软件支持Oracle、SqlServer、MySql、PostgreSQL、Sqlite、Access以及国产达梦等数据库的代码生成,可以生成各种架构代码、生成Winform界面代码、Web界面代码(包括EasyUI和BootstrapWeb界面)、Entity Framework实体框架代码、导出数据库文档、浏览数据库架构、查询数据、生成Sql脚本等,还整合自定义模板和数据库信息的引擎,方便编写自定义模板调试和开发。生成的框架代码支持多种数据库一起使用,也支持不同业务的数据库切割为多个库进行使用,是一种适应性非常强、弹性很好的应用框架。
Database2Sharp推荐采用软件功能“Enterprise Library代码生成”来生成项目代码,这个架构体系生成整个项目工程框架,包含实体类、数据访问类、业务类、Web页面代码、WCF相关服务层(可选)、Web API服务层(可选),以及各种服务的调用包装层代码等。该架构利用泛型及缓存机制,良好的架构极大简化代码,强大完善的基类机制使您甚至不用编写一行代码就能顺利运行。一个简单点击几次鼠标就能完成一周代码量的代码生成工具,效率惊人、友好体贴,真正的开发好伴侣。
当然,开发的过程是一个繁复、精细的过程,因此Database2Sharp也吸收了来自我们自己的实际需求,以及很多同仁朋友的宝贵意见,一直在改进,一直努力做到更好,以求达到一个更加完美、更加易用的境界。
在我们开发软件的时候,解决方案项目基于一定的分层组织,每个项目分层中,各个类的关系也是确定的,借助辅助工具(结合模板引擎)可以快速生成我们所需要的代码,并极大提高我们软件的开发效率,Database2Sharp代码生成工具就是一款专门针对我们自己框架结构配套的开发工具。
Database2Sharp代码生成工具,主要是基于数据库提取的元数据信息,根据表的信息和关系,字段信息等内容,生成我们框架所需要分层的类代码。
对于Winform开发,可以根据Winform框架或者混合框架的窗体界面类,生成标准的界面代码,列表界面默认具有分页查询、导入导出、高级查询、编辑、删除事件绑定,编辑界面则具有获取数据并显示在控件,保存后执行更新或者写入的操作。
对于Web开发,可以根据EasyUI控件界面或者Bootstrap控件界面的不同,生成对应的视图HTML代码和控制器类代码,同时这些界面默认也具有分页查询,导入导出,显示明细和保存数据的功能。
软件主要界面如下所示。
2、代码生成工具中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库
首先通过Nugget程序包下载一个Oracle.ManagedDataAccess.dll的文件,然后进行使用即可,经过测试使用这个类库,可以无视数据库系统的位数,最重要的是减少了Oracle客户端的安装。
为了和原有的系统支持的OracleClient实现区分,以便继续保留原有方式的处理,那么我们增加一个特别的OracleManaged类实现Oracle元数据的处理即可。
应用这个Oracle.ManagedDataAccess方式,相对于OracleClient方式,我们几乎不用变化任何对象的名称,只是换了一个命名空间而已,基本实现完全兼容。
有了这个获取数据的方式,当然需要对数据配置的界面增加一个OracleManaged的对应方式了,因为Oracle.ManagedDataAccess和OracleClient的连接字符串有所差异的。
前者Oracle.ManagedDataAccess的连接字符串变为:
Data Source= (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.mshome.net)
)
);User ID=win;Password=win
依照这个配置的参数我们修改下Oracle数据库连接字符串的配置界面如下:
其中我们对于Oracle连接字符串描述部分,提示参考PLSQL Developer里面【帮助】【支持信息】 【TNS名称】的对应部分即可,如下所示。
有了这些配置信息,我们就可以不管服务端或者本地的Oracle版本是32位的还是64位的,实现全部兼容,并且如果客户端没有安装Oracle客户端,照样可以访问Oracle服务端的数据的。
运行代码生成工具,可以获得Oracle的数据表等信息,可以在Oracle环境下,无需安装Oracle客户端,顺畅使用代码生成工具进行代码的开发工作了。
在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动的更多相关文章
- 代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
在代码生成工具的各种功能规划中,我们一向以客户的需求作为驱动,因此也会根据需要增加一些特殊的功能或者处理.在实际的开发中,虽然我们一般以具体的表进行具体业务开发,但是有些客户提出有时候视图开发也是很常 ...
- 基于Metronic的Bootstrap开发框架经验总结(18)-- 在代码生成工具Database2Sharp中集成对Bootstrap-table插件的分页及排序支持
在我们开发系统界面,包括Web和Winform的都一样,主要的界面就是列表展示主界面,编辑查看界面,以及一些辅助性的如导入界面,选择界面等,其中列表展示主界面是综合性的数据展示界面,一般往往需要对记录 ...
- 在代码生成工具Database2Sharp中增加Vue&Element 工作流页面的快速生成
在我们基于框架开发系统的时候,往往对一些应用场景的页面对进行了归纳总结,因此对大多数情况下的页面呈现逻辑都做了清晰的分析,因此在我们基于框架的基础上,增量式开发业务功能的时候,能够事半功倍.代码生成工 ...
- 在开发框架中扩展微软企业库,支持使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库
在前面随笔<在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容3 ...
- C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点
C#反射实现 一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...
- 利用代码生成工具Database2Sharp设计数据编辑界面
在Winform程序开发中,界面部分的开发工作量一般是比较大的,特别是表的字段数据比较多的情况下,数据编辑界面所需要的繁琐设计和后台逻辑处理工作量更是直线上升,而且稍不注意,可能很多处理有重复或者错误 ...
- 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码
在前面随笔<基于Metronic的Bootstrap开发框架--工作流模块功能介绍>和<基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)>中介绍了B ...
- 利用代码生成工具Database2Sharp生成ABP VNext框架项目代码
我们在做某件事情的时候,一般需要详细了解它的特点,以及内在的逻辑关系,一旦我们详细了解了整个事物后,就可以通过一些辅助手段来提高我们的做事情的效率了.本篇随笔介绍ABP VNext框架各分层项目的规则 ...
- 基于SqlSugar的开发框架循序渐进介绍(3)-- 实现代码生成工具Database2Sharp的整合开发
我喜欢在一个项目开发模式成熟的时候,使用代码生成工具Database2Sharp来配套相关的代码生成,对于我介绍的基于SqlSugar的开发框架,从整体架构确定下来后,我就着手为它们量身定做相关的代码 ...
随机推荐
- Circle Problem From 3Blue1Brown (分圆问题)
Background\text{Background}Background Last night, lots of students from primary school came to our c ...
- [Luogu2973][USACO10HOL]赶小猪Driving Out the Piggi…
题目描述 The Cows have constructed a randomized stink bomb for the purpose of driving away the Piggies. ...
- HDU 1276 士兵队列训练问题(队列)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Othe ...
- 以np.concatenate为主题,谈谈numpy数组按维度合并的问题
1.引言 最近在做多模态融合的图像问题,其中最需要解决的就是不同模态的图像用什么方法进行融合,最简单也最直观的方法就是采用合并数组的方法,将不同模态的图像合并为多通道进行处理.在一些论文中,比如< ...
- ES和zookeeper选取帮主之江湖秘闻
ES帮会 某日,ES帮会中决定选取老大统领帮会走向辉煌.大家七嘴八舌,讨论方案,场面一顿混乱.傻牛站起来大喊一声:谁比俺力气大,谁就当老大.(ES集群在启动时,选取集群master,按照nodeId进 ...
- OptimalSolution(2)--二叉树问题(3)Path路径问题
一.在二叉树中找到累加和为指定值的最长路径长度 给定一棵二叉树和一个32位整数sum,求累加和为sum的最长路径长度.路径是指从某个节点往下,每次最多选择一个孩子节点或者不选所形成的节点链 -3 / ...
- Python调试工具
1. 日志 通过日志或者print来打印变量.必要时可以打印locals()和globals() 建议使用logging.debug()来代替print,这样到了正式环境,就可以统一删除这些日志. 2 ...
- abp中将SqlServer切换为MySQL
一.移除默认SQL Server相关包 在EntityFrameworkCore项目下移除包Microsoft.EntityFrameworkCore.SqlServer.Microsoft.Enti ...
- Kong06-Kong 的集群怎么用
Kong 集群允许您通过添加更多的机器来处理更多的传入请求来横向扩展系统.它们将共享相同的配置,因为它们指向相同的数据库.指向相同数据存储的 Kong 节点将属于相同的 Kong 集群. 您需要在Ko ...
- Django学习day7——简单的使用数据库和模型
Django支持的数据库 PostgreSQL SQLite 3 MySQL Oracle 其中SQLite 3不需要安装,因为SQLite使用文件系统上的独立文件来存储数据 这里我们用SQLite ...