ORMAPPING出來已經很多年了,之前一直有關注,但一直沒有應用到項目中去,眾所周知,ORMAPPING 的性能是很大一個問題,雖然它節省代碼量,為程序員做了很多工作。而且ORMAPPING主要應用在JAVA領 域,.NET領域用到的少之又少,最近公司要做一個內部的資產管理系統,我就打算用ORMAPPING來做,對 幾種ORMAPPING的框架我進行了比較,第一,nhibernate這個我相信大家比較熟悉了,nhibernate在JAVA 領域已經應用相當廣泛了,nhibernate最持久層性能穩定,本來我也打算采用,但後來選擇放棄,主要是 他生成的一堆XML我很頭疼,不大好管理,這裡很多人會給nhibernate辯解,我一直以為nhibernate是 JAVA的東西,害怕性能問題。還有一個ORMAPPING的框架ibatis,這個其實也不錯,但最終我選擇了XPO, XPO是著名軟件公司devexpress的產品,它的應用簡單方便,好了,廢話少說,進入正題,今天就是講 ORMAPPING在XPO框架中的應用。
在講應用之前,先解析一下ORMAPPING的概念有助於讀者更好的理解代碼,ORMAPING其實是object ralation mapping其實就是對象關系映射,說白了就是把類映射到表,或者說把表在程序裡看成一個對象 ,更好的面向對象。ORMAAPING最重要的一些概念持久層,持久化工廠等等,各位自己去找資料,在此不 詳細說明。
下面我做一個例子,實現表的新增修改查詢。
這裡我建兩個表,一個是主表,一個是從表,它們之間是一對多的關系。基於ORMAPPING的概念,我先 建兩個類,繼承於XPOBJECT。
namespace MyFirstMapping { public class User:XPObject { public User(Session session) : base(session) { } private string accountName; private string realName; private string userPwd = "U"; public string AccountName { get { return accountName; } set { accountName = value; } } public string RealName { get { return realName; } set { realName = value; } } public string UserPwd { get { return userPwd; } set { userPwd = value; } } [Association("MyRalation", typeof(UserDetail))] public XPCollection UserDetailss { get { return GetCollection ("UserDetailss"); } } } }
namespace MyFirstMapping { public class UserDetail:XPObject { public UserDetail(Session session) : base(session) { } private string accountName; private string address; public string AccountName { get { return accountName; } set { accountName = value; } } public string Address { get { return address; } set { address = value; } } [Association("MyRalation")] public User user; } }