ORM架构XPO学习指南(超好用的数据访问层组件)
XPO学习指南 XPO是一个O/R Mapping框架,提供了一个强大的数据访问层组件,用于简化数据库操作。下面将对XPO的主要特性和使用方法进行总结。 一、持久类 在XPO中,一个持久类(Persistent Class)一般来说映射为一个表类型,该表的每一条纪录即一个持久类的实例。持久类继承自XPObject或XPBaseObject。例如: public class Customer : XPObject 创建对象就创建了一条新纪录,调用基类的save就保存到库。XPObject继承自XPBaseObject,已包含Oid属性表示表的唯一自增量字段。XPBaseObject需要手动去作一些映射工作,但提供更大的灵活性。XPBaseObject实现了IXPObject接口,实际上假如我们自己去实现这个接口,也能自动保存到数据库,也就是对象持久化了,比如窗体winform的状态就可以保存。 二、表间关系 XPO支持一对一、一对多、多对多三种关系。数据库的表间关系在框架内体现为持久对象之间的关系。一般我们在设计一些类似关系的类时,我们用数组或者其他集合表示方法IList等等,来为类之间建立关系。XPO使用XPCollection来表示类之间的“对多”关系。并且附加属性来表示多对多还是一对多的关系。 例如,一对多关系: public class Customer : XPObject { ... [Association("CustomerAddresses", typeof(Address))] public XPCollection Addresses { get { return GetCollection("Addresses"); } } ... } 同时另一个类Adresses中定义: [Association("CustomerAddresses")] public Customer Customer; 此时这个类的关联关系并没有指定关联类型,因为已经说明了类型。 可以在关联关系中进一步指定其他附加属性,比如级联删除关系: public class Customer : XPObject { ... [Association("CustomerOrders", typeof(Order)), Aggregated] public XPCollection Orders { get { return GetCollection("Orders"); } } ... } 多了Aggregated这种特性,表示聚集,也就是表之间的级联删除关系。 访问子表的方法: 枚举 foreach(Order theOrder in theCustomer.Orders) 增加子表的记录: myCustomer.Orders.Add(myOrder); 三、查询 使用条件对象: 例如:Freight < 10M XPCollection orders = new XPCollection(typeof(Order), new BinaryOperator("Freight", 10M, BinaryOperatorType.Less)); 这里使用了指定持久类类型的集合类XPCollection对象。这里并不意味着只能在一个表中查。如果这个持久类和其他类有关联关系的话,那么条件对象可以包含对关联类的属性条件。也就是实现了多表查询。下面的组合查询中的Address就是Customer的一个聚集类。 XPO还提供了其他的查询方式,例如使用参数查询、使用Sql查询等。
- sx11160602012-08-14资料百度上都可以百度到,没有具体的针对性,太宽泛了~
- gjc272012-02-21比较像一个说明文档,指导作用不强,可以当成字典用
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助