博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义ORM系列(三)工具雏形及基本用法
阅读量:6159 次
发布时间:2019-06-21

本文共 1580 字,大约阅读时间需要 5 分钟。

 

引言

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

  初看起来,这个有点像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代替就可以了。

  代码:

  结合我的  和  以及  中的思想,就可以实现一个完整的基于attribute的ORM小工具,以及有选择的持久化。还可能会极大的减轻系统的维护量。在后面我会将完整版的工具上传,我还会继续完善其他的功能,以及进行一些测试。

 

后话

  如果有哪位有心人,愿意看在下的代码,不嫌弃在下代码乱的话,可以帮我理理思路。因为,我觉得目前的代码结构不是很好,我不知道我这个在实际中使用的话,会遇到什么问题,在哪些地方还需要提高,还需要注意什么,或者说代码的结构那里需要调整?希望有缘人可以指点一二,当然了,胡乱说几句也可以,先谢过了。

  当然了,这个ORM工具我也会继续的完善,希望在下一个项目中可以实践一下。

       项目的SVN地址:

       大家可以随意获取,随意使用,随意批评。

本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/461380,如需转载请自行联系原作者

你可能感兴趣的文章
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>
Redis 介绍2——常见基本类型
查看>>
asp.net开发mysql注意事项
查看>>
(转)Cortex-M3 (NXP LPC1788)之EEPROM存储器
查看>>
ubuntu set defult jdk
查看>>
[译]ECMAScript.next:TC39 2012年9月会议总结
查看>>
【Xcode】编辑与调试
查看>>
用tar和split将文件分包压缩
查看>>
[BTS] Could not find stored procedure 'mp_sap_check_tid'
查看>>
PLSQL DBMS_DDL.ALTER_COMPILE
查看>>
Activity生命周期
查看>>
高仿UC浏览器弹出菜单效果
查看>>
Ubuntu忘记密码,进不了系统的解决方法
查看>>
[原创]白盒测试技术思维导图
查看>>
<<Information Store and Management>> 读书笔记 之八
查看>>
Windows 8 开发之设置合约
查看>>