XPO中的继承

XPO的继承类的持久化,简单说来有2种方式:

1、将继承关系映射到一张单表:

using DevExpress.Xpo;


public class Person : XPObject {

    public string Name = "";

}


[MapInheritance(MapInheritanceType.ParentTable)]

class Customer : Person {

    public string Preferences = "";

}


[MapInheritance(MapInheritanceType.ParentTable)]

public class Employee : Person {

    public int Salary = 1000;

}


[MapInheritance(MapInheritanceType.ParentTable)]

public class Executive : Employee {

    public int Bonus = 100;

}

 

要采用这种方式只需要在属性上添加一个属性[MapInheritance(MapInheritanceType.ParentTable)]即可。

 

优点:因为所有的东西都在一起,修改方便,速度快,避免Join操作。 

缺点:很明显,将浪费大量的空间。

 

 2、将各类映射至各自的单表中

 

代码不贴了,就是把属性改为MapInheritanceType.OwnTable

 

注意XPO必须把基类也保存成一张单独的表,拿图中例子来说,没有办法让XPO在3个子类表中都增加一个Name字段而省略掉Person表。 

 

优点:不像上一种方式那样浪费空间。如果这也算优点的话。

缺点:逃不掉Join操作,会带来性能损失。 

转载于:https://www.cnblogs.com/Elvin/archive/2010/02/03/1662675.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值