自定义ORM系列(三)工具雏形及基本用法
?
引言
本篇給大家介紹我這個(gè)工具的雛形結(jié)構(gòu),以及基本的用法,還請(qǐng)大家多提意見(jiàn)。
初看起來(lái),這個(gè)有點(diǎn)像NHibernate。說(shuō)到這里,肯定有人要拍磚了。其實(shí),我也知道。我這個(gè)不入流的東西,和NHibernate相比差遠(yuǎn)了。我開(kāi)發(fā)這個(gè)東西的原因主要有兩個(gè):
1)NHibernate太復(fù)雜了,學(xué)習(xí)了兩個(gè)星期,覺(jué)得它太強(qiáng)大了。但是強(qiáng)大是用復(fù)雜做代價(jià)的,里面要學(xué)習(xí)的東西太多了,不敢輕易引入項(xiàng)目,因?yàn)楹芏嘣聿磺宄?#xff0c;報(bào)錯(cuò)也不明確,所以不敢輕易在項(xiàng)目中使用。
2)自己想練練手,順便通過(guò)這個(gè)過(guò)程,也好深入繼續(xù)深入學(xué)習(xí)一下NHibernate。因?yàn)樵趯?xiě)這個(gè)工具的過(guò)程中,我會(huì)看NHibernate的源碼,然后看他的源碼調(diào)用關(guān)系,調(diào)用邏輯,在自己的工具中模仿它,通過(guò)模仿來(lái)學(xué)習(xí)提高。
?
正文
開(kāi)始正文吧。寫(xiě)上一幅我目前的工具類圖。
?
?
?
基本的調(diào)用關(guān)系,有點(diǎn)像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"));
????????????//事務(wù)操作
????????????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();
????????????????}
????????????}
?
內(nèi)部具體的數(shù)據(jù)庫(kù)操作,目前使用的是Enterprise Library V5.0,感覺(jué)使用企業(yè)庫(kù)比較方便。后面的話,如果發(fā)現(xiàn)不合適,可以直接用原生的ADO.NET代替就可以了。
代碼:/Files/virusswb/BTFramework.rar
結(jié)合我的 自定義ORM系列(一)利用attribute實(shí)現(xiàn)簡(jiǎn)單的reader=>entity和reader=>List<entity>映射?和 自定義ORM系列(二)發(fā)現(xiàn)屬性是否修改,有選擇的持久化?以及 胡亂說(shuō)一下我對(duì)于 BO VO PO DTO 的理解?中的思想,就可以實(shí)現(xiàn)一個(gè)完整的基于attribute的ORM小工具,以及有選擇的持久化。還可能會(huì)極大的減輕系統(tǒng)的維護(hù)量。在后面我會(huì)將完整版的工具上傳,我還會(huì)繼續(xù)完善其他的功能,以及進(jìn)行一些測(cè)試。
?
后話
如果有哪位有心人,愿意看在下的代碼,不嫌棄在下代碼亂的話,可以幫我理理思路。因?yàn)?#xff0c;我覺(jué)得目前的代碼結(jié)構(gòu)不是很好,我不知道我這個(gè)在實(shí)際中使用的話,會(huì)遇到什么問(wèn)題,在哪些地方還需要提高,還需要注意什么,或者說(shuō)代碼的結(jié)構(gòu)那里需要調(diào)整?希望有緣人可以指點(diǎn)一二,當(dāng)然了,胡亂說(shuō)幾句也可以,先謝過(guò)了。
當(dāng)然了,這個(gè)ORM工具我也會(huì)繼續(xù)的完善,希望在下一個(gè)項(xiàng)目中可以實(shí)踐一下。
項(xiàng)目的SVN地址:svn://www.oksvn.com/BTFramework
大家可以隨意獲取,隨意使用,隨意批評(píng)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/virusswb/archive/2010/12/21/1913057.html
總結(jié)
以上是生活随笔為你收集整理的自定义ORM系列(三)工具雏形及基本用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux驱动开发环境配置(内核源码树构
- 下一篇: 5大过程组任务概述