ORM之三:DbProvider与DbFactory
这里涉及到两个关键对象,一个是DbProvider,另一个就是DbFactory。粗略草图如下:

从上图可以看出,开放给消费者的接口就是DbProvider类,不过他主要继承IDbProviderExtend与IDbProvider接口。
IDbProvider接口提供单表操作、多表查询、扩展操作、实务操作。GetReqository主要作用是单表标准查询、修改、删除、聚合函数;GetQuery主要左右是多表查询;GetDbExtension主要针对一些扩展操作,比喻存储过程,执行sql语句等。至于Begin,Commit,RollBack就是涉及事务操作了。
IDbProviderExtend接口主要就是执行数据库底层操作了,也就是对SqlHelper的封装吧,读者可以这样去理解的。这里这样单独一个接口出来,主要是为了隔离IDbProvider接口直接操作数据库。虽热IDbProvider接口是数据库提供者对象的入口,但是本质操作数据库却是IDbProviderExtend。
在DbProvider中依赖抽象类DbFactory。在抽象类里面根据配置文件的数据库连接字符串,区别当前实例是mssql还是mysql还是oracle,或者其他数据库类型,主要是根据反射动态加载要调用的实例对象。因为该抽象类是依赖在DbProvider中,那么这个抽象类一定要定义出在该数据库类型下,ORM怎么翻译语句(不同数据库sql语句存在差异),怎么具体执行数据库操作等。
那么综合来说,Factory中主要是封装了a、动态加载数据库类型实例;b、翻译功能;c、获取单表多表操作对象;d、具体数据库执行操作对象,包含事务处理。而DbProvider则通过Init方法初始化具体数据库类型实例对象Factory,执行对应的功能点。
ORM之三:DbProvider与DbFactory的更多相关文章
- 我的ORM之三 -- 更新
我的ORM索引 更新语法 var 影响行数 = dbr.表.Update(实体).Where(条件).Execute(); 实体类型: 更新的实体类型和添加的实体类型一样,有三类: 1. 任何C#类. ...
- 我的ORM汇总
MyOql是我写的ORM,目前仅支持 MSSql2005+ ,从2009年到今天,已使用过不少项目,之后会写 其它关系数据库的解析器: MySql,Sqlite,Oracle 等. 代码地址(最新版) ...
- ORM系列之三:Dapper
目录 1.Dapper 简介 2.Dapper 安装 3.Dapper 使用 Dapper简介 Dapper是一个轻量级的ORM框架,短小精悍,正如其名.对于小项目,使用EF,NHibernate这样 ...
- Farseer.net轻量级开源框架 中级篇:DbFactory数据工厂
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 执行SQL语句 下一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 ...
- 一个类搞定SQL条件映射解析,实现轻量简单实用ORM功能
个人觉得轻简级的ORM既要支持强类型编码,又要有执行效率,还要通俗易懂给开发者友好提示,结合Expression可轻松定制自己所需要功能. Orm成品开源项目地址https://github.com/ ...
- Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...
- CYQ.Data V5 从入门到放弃ORM系列:框架的优势
前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化 ...
- 一个简单得不能再简单的“ORM”了
本文适合初学者,老鸟请点赞即走,谢谢. 文字功底有限,表述不恰当的地方,请各位多多包涵. 一,核心 现在ORM已经很多了,功能也齐全了,大家说我这是干无聊的事,造的连车轮子都还不算,反正我就当学习. ...
- 十四、EnterpriseFrameWork框架核心类库之简易ORM
在写本章前先去网上找了一下关于ORM的相关资料,以为本章做准备,发现很多东西今天才了解,所以在这里也对ORM做不了太深入的分析,但还是浅谈一下EFW框架中的设计的简易ORM:文中有一点讲得很有道理,D ...
随机推荐
- Java面试题-并发工具
1. 如何实现一个流控程序,用于控制请求的调用次数?
- poj12月其他题解(未完)
最近编程的时间比较少啊…… poj3253 就是个合并果子,各种优先队列即可(显然单调队列最优) poj3263 线段树统计每个点被覆盖了多少次即可,注意要去重 poj3625 最小生成树 poj36 ...
- CI的知识点
1. 超级对象中$this->uri 获取pathinfo中的值,$this->uri->segment(n)中的n表示第几个参数 如:/welcome/index/1 使用$th ...
- 普通文件迁移ASM
1.ASM Access Through FTP and HTML Using XDB Configuration 2.rman 3.dbms_file_transfer 4.11g asmcmd 利 ...
- Serv-U软件在64位操作系统下使用不了odbc解决方法
这是因为64位Windows上有两个ODBC连接,你需要创建一个32位的ODBC连接.打开32位ODBC管理器的位置 X:\Windows\syswow64\odbcad32.exe. 利用这个管理器 ...
- FOJ 1608 Huge Mission 线段树
每个节点维护一个最小值,更新发现如果大于最小值,直接向下更新.速度还可以.. #include<cstdio> #include<algorithm> #include< ...
- 年过三十,我为什么要学习ios 与安卓App 移动端技术
今天跟我华为的同学谈了一些技术/人生方面的感悟,感觉自己的人生目标及后面的工作/生活有了一个比较清晰的认识与规划. 首先我谈了一下我为什么要学习ios与安卓技术,我其实不想通过这二门技术来提升我的薪酬 ...
- Codeforces 603A Alternative Thinking
题意:给你一个01串,必须替换一次,且替换的为子串.问换完后,最大01串长度. #include <bits/stdc++.h> typedef long long ll; using n ...
- ASP.NET中的注释 .
之前只知道<!-- -->可以注释掉html页面中的某些部分,或者添加注释说明.今天又看到<%----%>也能添加注释,于是我不解了,google一下. <!--注释-- ...
- 转:并查集总结 例题:hdoj 1232 畅通工程
引述之类的就免了,我们现在做题碰到的并查集基础题目大都是连通城市(或者村庄学校),接下来我们就称每一个城市为一个元素.我们解决此类题目运用的是树结构,每个集合用一棵树表示,而树的节点用于存储集合中的元 ...