如何实现NHibernate中的Inheritance Mapping(继承映射)策略?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3820个文字,预计阅读时间需要16分钟。
参考PoEAA,继承的设计模式包括:
1. Concrete Table Inheritance(具体表继承)
2.Single Table Inheritance(单表继承)
3.Class Table Inheritance(类表继承)
具体表继承:父类为接口或抽象类。
参考PoEAA,继承的设计模式有:Concrete Table Inheritance(具体表继承)、Single Table Inheritance(单表继承)、Class Table Inheritance(类表继承)。Concrete Table Inheritance:
父类为接口或抽象类,不需要存储,每一个子类使用一个独立的表。
这种设计在关系型数据库上处理多态关联、查询时很不方便,例如父类需要关联另外一个类时,所有子类的表都需要加入这个关联字段;如果其它类需要跟父类关联,则对应每一个子类需要添加一个外键(使用SQL,可以用1个字段去关联所有子类的表,但NHibernate的这种方式不支持,数据库也不能使用外键)。
本文共计3820个文字,预计阅读时间需要16分钟。
参考PoEAA,继承的设计模式包括:
1. Concrete Table Inheritance(具体表继承)
2.Single Table Inheritance(单表继承)
3.Class Table Inheritance(类表继承)
具体表继承:父类为接口或抽象类。
参考PoEAA,继承的设计模式有:Concrete Table Inheritance(具体表继承)、Single Table Inheritance(单表继承)、Class Table Inheritance(类表继承)。Concrete Table Inheritance:
父类为接口或抽象类,不需要存储,每一个子类使用一个独立的表。
这种设计在关系型数据库上处理多态关联、查询时很不方便,例如父类需要关联另外一个类时,所有子类的表都需要加入这个关联字段;如果其它类需要跟父类关联,则对应每一个子类需要添加一个外键(使用SQL,可以用1个字段去关联所有子类的表,但NHibernate的这种方式不支持,数据库也不能使用外键)。

