Welcome 微信登录

首页 / 网页编程 / ASP.NET / 一个O/RMapping的简单例子

一个O/RMapping的简单例子2011-10-25 博客园 刘湛滔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;                   }}