LmgORM项目: 介绍
?
LmgOrm介紹?
目 錄?
第一章:前言... 3
第二章:系統層次劃分... 3
第三章:LmgOrm數據庫訪問層... 3
第四章:LmgOrm ORM.. 4
一:LmgOrm O/R Mapping 起步... 4
二:LmgOrm O/R Mapping映射方法說明... 4
三:LmgOrm O/R Mapping對繼承的支持... 4
四:LmgOrm O/R Mapping操作核心... 5
五:LmgOrm O/R Mapping 事務處理... 5
六:LmgOrm O/R Mapping 對象查詢... 5
七:LmgOrm O/R Mapping 配置文件... 5
第一章:前言?
LmgOrm的目標,是開發一個開源的基于Microsoft.Net的輕量級的應用軟件系統開發框架,包含以下內容:
? 一個輕量級的O/R Mapping框架。
這個框架從二年前就開始做了,但是因為工作的原因,具體的開發過程一直是斷斷續續,中間因個人對編程思想認識的變化,在結構方面也一直有點變化。
第二章:系統層次劃分?
數據存取方式
第三章:LmgOrm數據庫訪問層?
第四章:LmgOrm ORM
一:LmgOrm O/R Mapping 起步
對開發人員來說,只有BaseDao、NHibernatePage、QueryHelper等極少數接口需要掌握,上手快,使用非常方便。
下面的例子給出了使用LmgOrm進行ORM操作的基本過程。
定義一個類:
View Code public class Product{private int m_ID;
private string m_Name;
private decimal m_Price;
public Product() { }
public Product(string name, decimal price){
m_Name = name;
m_Price = price;
}
public int ID{
get { return m_ID; }
set { m_ID = value; }
}
public string Name{
get { return m_Name; }
set { m_Name = value; }
}
public decimal Price{
get { return m_Price; }
set { m_Price = value; }
}
}
上面這個Produc類對應的數據庫表的結構應該是:
下面的代碼演示了LmgOrm是如何把Product對象新增到數據庫中的。
二:LmgOrm O/R Mapping映射方法說明?
映射部分,完成對象和關系型數據庫之間映射關系的表達。LmgOrm使用xml來描述映射關系。
以下是實體類對應的XML文件 需要設置成 嵌入的資源 要不然系統會報錯的。
View Code <?xml version="1.0" encoding="GBK"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="LmgOrm.Entity" assembly="LmgOrm.Entity"> <class name="Produc" table="cm_Produc" lazy="false"> <id name="Id" type="Int32" length="10"> <column name="id" not-null="true" unique="true"/> <generator class="sequence"> <param name="sequence">SEQ_Produc_ID</param> </generator> </id> <property name="Name" column="name" not-null="False" length="50" type="String"/> <property name="Price " column="price" not-null="False" length="10" type=" Int32 "/> </class> </hibernate-mapping>三:LmgOrm O/R Mapping對繼承的支持?
LmgOrm目前支持一種繼承模式:ONE_CLASS_ONE_TABLE
這種映射模式將每個類映射到對應的一個表
四:LmgOrm O/R Mapping操作核心?
LmgOrm O/R Mapping框架的操作核心,在于BaseDao類,對實體對象的操作,包括增、刪、改、查的操作,都是通過這個接口來進行的。
查詢的補助類是:QueryHelper
SQL查詢補助類是:DbHelper
五:LmgOrm O/R Mapping 事務處理
LmgOrm框架提供了簡單的事務處理的能力,這是通過BaseDao接口來實現的。他們會自動開啟事務。
六:LmgOrm O/R Mapping 對象查詢
1:一般查詢
2:分頁查詢
QueryHelper queryHelper = new QueryHelper()queryHelper.AddTable(typeof(KnowUser), "m");
queryHelper.AddOrder("m", "ReTopic", false);
queryHelper.SetFullFieldSql(null, null);
NHibernatePage nPage = QueryHandler.Instance.QueryByPage("數據庫連接", typeof(KnowUser), curPage, pageSize, queryHelper);
七:LmgOrm O/R Mapping 配置文件
配置文件例子:
View Code <?xml version="1.0" encoding="gb2312" ?><LmgOrm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LmgOrm.ORM>
<connections>
<connection name="DBNAME_COUNTRYDB" datetype="sqlserver2000" conntype="System.Data.SqlClient.SqlConnection" assembly="System.Data.SqlClient">
<![CDATA[Data Source=lmg\SQLEXPRESS;DataBase=countrydb;user=sa;password=123456;Connect Timeout=180;Enlist=true;Pooling=true;Max Pool Size = 300;Min Pool Size = 5;Connection Lifetime=200;]]>
</connection>
</connections>
<assembly>
<![CDATA[LmgOrm.Entity]]>
</assembly>
</LmgOrm.ORM>
<LmgOrm.Cache />
</LmgOrm>
第五章:LmgOrm Cache
一:LmgOrm Cache起步
這個沒什么說的用的dz!nt3.0的緩存,我是直接Copy過來的 隨便也學習學習一個它的原理咯。
二:LmgOrm Cache緩存架構說明
緩存架構說明如下:
看到了吧,里面的DNTCache就是“策略”模式的應用場景,而DefaultCache , ForumCache,RssCache等等就是相應的具體策略,每一種策略都會對.net所提供的緩存機制進行一番“訂制”,以實現不同的用途。比如系統DefaultCache在對象到期時提供數據再次加載機制,而ForumCache而不使用這種機制,另外還有緩存的到期時間幾種策略也各不相同,這都是根據具體的應用場景"量身訂制"的。
下面對緩存設計所采用的幾種技術做一下簡要說明。包括XML,XPATH ,"單件模式" 以及跨web園共享數據。
記得在豪杰工作期間,一次老梁給我們開會,其中的一段話我至今還記憶猶新,他說CPU訪問內存的速度和訪問硬盤的速度在某些情況下是相近的,如果我沒理解的話比如說“虛擬緩存”或最新頻繁訪問的硬盤區段,這些地方的代碼或文件會有比較高的運行和訪問效率。因此,我想到了使用文件標志關聯的方法來解決這個多進程問題。接著就順理成章的使用了文件修改日期這個屬性進行在多進程下緩存是否更新的依據了,大家可以到開源下載包中的config文件夾下把一個cache.config的文件,對應最新的數據項再回過頭來看代碼就會一清二楚了
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的LmgORM项目: 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打通NTFS权限 文件共享各取所需
- 下一篇: 如何成为php高手