自定义ORM系列(三)工具雏形及基本用法
引言
本篇给大家介绍我这个工具的雏形结构,以及基本的用法,还请大家多提意见。
初看起来,这个有点像NHibernate。说到这里,肯定有人要拍砖了。其实,我也知道。我这个不入流的东西,和NHibernate相比差远了。我开发这个东西的原因主要有两个:
1)NHibernate太复杂了,学习了两个星期,觉得它太强大了。但是强大是用复杂做代价的,里面要学习的东西太多了,不敢轻易引入项目,因为很多原理不清楚,报错也不明确,所以不敢轻易在项目中使用。
2)自己想练练手,顺便通过这个过程,也好深入继续深入学习一下NHibernate。因为在写这个工具的过程中,我会看NHibernate的源码,然后看他的源码调用关系,调用逻辑,在自己的工具中模仿它,通过模仿来学习提高。
正文
开始正文吧。写上一幅我目前的工具类图。
基本的调用关系,有点像NHibernate。
给大家先贴一段使用的示例代码。
ISession session = new Configuration().Configure().BuildSessionFactory().OpenSession();
Order order = new Order();
Guid id = order.OrderID = Guid.NewGuid();
order.ProductName = "seed1221002" + DateTime.Now.ToLongTimeString();
//添加
session.Save(order);
session.SubmitChange();
//获取
order = new Order();
order = session.Get(new Guid("6744C2AB-C780-4DAD-9089-DF166747640F"));
//事务操作
using (ITransaction tran = session.BeginTransaction())
{
try
{
session.Save(order);
order.ProductName = "seed1221003" + DateTime.Now.ToLongTimeString();
session.Update(order);
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
}
}
内部具体的数据库操作,目前使用的是Enterprise Library V5.0,感觉使用企业库比较方便。后面的话,如果发现不合适,可以直接用原生的ADO.NET代替就可以了。
代码:/Files/virusswb/BTFramework.rar
结合我的 自定义ORM系列(一)利用attribute实现简单的reader=>entity和reader=>List<entity>映射 和 自定义ORM系列(二)发现属性是否修改,有选择的持久化 以及 胡乱说一下我对于 BO VO PO DTO 的理解 中的思想,就可以实现一个完整的基于attribute的ORM小工具,以及有选择的持久化。还可能会极大的减轻系统的维护量。在后面我会将完整版的工具上传,我还会继续完善其他的功能,以及进行一些测试。
后话
如果有哪位有心人,愿意看在下的代码,不嫌弃在下代码乱的话,可以帮我理理思路。因为,我觉得目前的代码结构不是很好,我不知道我这个在实际中使用的话,会遇到什么问题,在哪些地方还需要提高,还需要注意什么,或者说代码的结构那里需要调整?希望有缘人可以指点一二,当然了,胡乱说几句也可以,先谢过了。
当然了,这个ORM工具我也会继续的完善,希望在下一个项目中可以实践一下。
项目的SVN地址:svn://www.oksvn.com/BTFramework
大家可以随意获取,随意使用,随意批评。
转载于:https://www.cnblogs.com/virusswb/archive/2010/12/21/1913057.html
自定义ORM系列(三)工具雏形及基本用法相关推荐
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis 介绍了Red ...
- VSTO之旅系列(三):自定义Excel UI
VSTO之旅系列(三):自定义Excel UI 原文:VSTO之旅系列(三):自定义Excel UI 本专题概要 引言 自定义任务窗体(Task Pane) 自定义选项卡,即Ribbon 自定义上下文 ...
- idea学习系列三之版本管理工具
idea学习系列三之版本管理工具 上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了. 这篇文件将会介绍一下 ...
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解
前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
- 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量...
当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产 品可供参考,同时很多团队也会选择自主开发实现,而不管是 ...
- 前端工程师和设计师必读文章推荐【系列三十六】
<Web 前端开发精华文章推荐>自2011年6月20号发布第一期以来,历经五年半,总共发布了30多期.今天这篇是2017年第2期(总第36期),希望你能在这里发现有用的资料. 梦想天空专注 ...
- Zabbix5系列-报表工具ZbxTable (十八)
Zabbix5系列-报表工具ZbxTable 一.参考 二.环境 三.安装nginx.mysql 四.安装 zbxtable 4.1 配置数据库 安装 初始化 4.2 配置nginx 4.3 配置ms ...
最新文章
- 谷歌发布深度学习新算法,适用于真实机器人的技能学习
- 如何通过VPC在本机搭建局域网
- zigbee协议技术无线模块对智能家居市场前景分析
- SQL Server类型与C#类型对应关系
- springboot整合 beatlsql
- 计算机安全日志,如何回复被删除的电脑安全日志
- python画图包-Python 绘图包 Matplotlib Pyplot 教程
- 真实的网络赚钱经历:另类推广引流操作CPA!
- ccrpipa6.ocx 和mswinsck.ocx 等文件缺失问题解决(用于TCP调试助手)
- iphone开发笔记一 mac os 10.7.2安装与配置
- 现在开一间网吧还能挣钱么?
- k8s——pv(静态+动态storageclass)与pvc
- 一个解决MacBook Pro 突然连接无线不能上网 方案
- 2008年胡润中国富豪榜榜单(301-400名)
- 有一头小母牛(0岁),它从第四年(3岁)开始,每年都生一头小母牛(一年只生一头),而且,所以的小母牛也都会在第四年开始生育。假设所有的母牛都不会死,请问:第n年,此牛群共有多少头母牛?
- SVG之Animation
- acwing----春季每日一题2022篇(二)
- 如何正确的从UI图中取色
- WEB OF SCIENCE 中检索式的编写
- CHKen Player 終結版(完整)
热门文章
- linux安装字体后wps无法打开,Ubuntu安装WPS后提示缺失字体怎么办?
- python数学公式代码导入_在Matplotlib图中插入LaTex公式实例
- Smoke Test与Ad hoc Test
- 文治者必有武备不然长大了挨欺负_“有文事者必有武备,有武备者必有文事。”出自司马迁的《史记》。...
- Xml 格式数据的生成和解析
- 语言 山东专升本 真题_专升本英语真题
- oracle判断修改,【数据库】Oracle实现判断条件批量修改功能
- js 月份加6个月_12月AHA HS大众急救认证培训22个城市报名开启!2021年1~6月份课程预售限时开启!!...
- android自定义相机预览尺寸,相机在Android中,如何获得最佳尺寸,预览尺寸,图片尺寸,视图尺寸,图像扭曲...
- Linux下Nginx编译安装后的开机自启动设置