引言

  本篇给大家介绍我这个工具的雏形结构,以及基本的用法,还请大家多提意见。

  初看起来,这个有点像NHibernate。说到这里,肯定有人要拍砖了。其实,我也知道。我这个不入流的东西,和NHibernate相比差远了。我开发这个东西的原因主要有两个:

  1)NHibernate太复杂了,学习了两个星期,觉得它太强大了。但是强大是用复杂做代价的,里面要学习的东西太多了,不敢轻易引入项目,因为很多原理不清楚,报错也不明确,所以不敢轻易在项目中使用。

  2)自己想练练手,顺便通过这个过程,也好深入继续深入学习一下NHibernate。因为在写这个工具的过程中,我会看NHibernate的源码,然后看他的源码调用关系,调用逻辑,在自己的工具中模仿它,通过模仿来学习提高。

正文

  开始正文吧。写上一幅我目前的工具类图。

  

  基本的调用关系,有点像NHibernate。

  给大家先贴一段使用的示例代码。

Custom ORM Code Demo

 //初始化Session
            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系列(三)工具雏形及基本用法相关推荐

  1. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  2. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  3. VSTO之旅系列(三):自定义Excel UI

    VSTO之旅系列(三):自定义Excel UI 原文:VSTO之旅系列(三):自定义Excel UI 本专题概要 引言 自定义任务窗体(Task Pane) 自定义选项卡,即Ribbon 自定义上下文 ...

  4. idea学习系列三之版本管理工具

    idea学习系列三之版本管理工具 上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了. 这篇文件将会介绍一下 ...

  5. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  6. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  7. 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量...

    当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产 品可供参考,同时很多团队也会选择自主开发实现,而不管是 ...

  8. 前端工程师和设计师必读文章推荐【系列三十六】

    <Web 前端开发精华文章推荐>自2011年6月20号发布第一期以来,历经五年半,总共发布了30多期.今天这篇是2017年第2期(总第36期),希望你能在这里发现有用的资料. 梦想天空专注 ...

  9. Zabbix5系列-报表工具ZbxTable (十八)

    Zabbix5系列-报表工具ZbxTable 一.参考 二.环境 三.安装nginx.mysql 四.安装 zbxtable 4.1 配置数据库 安装 初始化 4.2 配置nginx 4.3 配置ms ...

最新文章

  1. 谷歌发布深度学习新算法,适用于真实机器人的技能学习
  2. 如何通过VPC在本机搭建局域网
  3. zigbee协议技术无线模块对智能家居市场前景分析
  4. SQL Server类型与C#类型对应关系
  5. springboot整合 beatlsql
  6. 计算机安全日志,如何回复被删除的电脑安全日志
  7. python画图包-Python 绘图包 Matplotlib Pyplot 教程
  8. 真实的网络赚钱经历:另类推广引流操作CPA!
  9. ccrpipa6.ocx 和mswinsck.ocx 等文件缺失问题解决(用于TCP调试助手)
  10. iphone开发笔记一 mac os 10.7.2安装与配置
  11. 现在开一间网吧还能挣钱么?
  12. k8s——pv(静态+动态storageclass)与pvc
  13. 一个解决MacBook Pro 突然连接无线不能上网 方案
  14. 2008年胡润中国富豪榜榜单(301-400名)
  15. 有一头小母牛(0岁),它从第四年(3岁)开始,每年都生一头小母牛(一年只生一头),而且,所以的小母牛也都会在第四年开始生育。假设所有的母牛都不会死,请问:第n年,此牛群共有多少头母牛?
  16. SVG之Animation
  17. acwing----春季每日一题2022篇(二)
  18. 如何正确的从UI图中取色
  19. WEB OF SCIENCE 中检索式的编写
  20. CHKen Player 終結版(完整)

热门文章

  1. linux安装字体后wps无法打开,Ubuntu安装WPS后提示缺失字体怎么办?
  2. python数学公式代码导入_在Matplotlib图中插入LaTex公式实例
  3. Smoke Test与Ad hoc Test
  4. 文治者必有武备不然长大了挨欺负_“有文事者必有武备,有武备者必有文事。”出自司马迁的《史记》。...
  5. Xml 格式数据的生成和解析
  6. 语言 山东专升本 真题_专升本英语真题
  7. oracle判断修改,【数据库】Oracle实现判断条件批量修改功能
  8. js 月份加6个月_12月AHA HS大众急救认证培训22个城市报名开启!2021年1~6月份课程预售限时开启!!...
  9. android自定义相机预览尺寸,相机在Android中,如何获得最佳尺寸,预览尺寸,图片尺寸,视图尺寸,图像扭曲...
  10. Linux下Nginx编译安装后的开机自启动设置