2009-08-04 28 views
1

我为一个特定的项目提供了一个复杂的3NF数据库。我想避免使用每表的类表设计。相反,我想从概念化业务角度对我的域对象进行建模。NHibernate是否支持使用组合ID将抽象类映射到不同的表?

擦是如何正确坚持这一信息。我知道我可以去ADO路线,但我想刺探一下使用NHibernate,在其他具有更多灵活数据存储的项目中成功使用了它。

所以,我需要知道的NHibernate会支持以下情形:

我有被称为ProjectStatus,这与有关的一些注意事项以及包括日期戳各种活动屈指可数的概念对象状态。构成ProjectStatus的所有数据都来自2个或更多表格。没有ProjectStatus表。

我知道我可以在我的NH映射得到这个工作做了工会子类,但...

一个持有大量的,我需要有一个综合的ID信息的表(二PK字段一起组成身份签名)。我知道NH也支持复合ID,但我怎样才能将我的联合映射到复合键上呢?我需要在union-subclass部分下面指定一个组合键吗?

dba拒绝让她接近神经质的3NF数据模型出现问题,所以我被困在那个前面。如果我为了缓解/发展速度而不得不放弃ADO,那就这样吧,但是我希望NH能够超过...

回答

0

我收集到你有一个基类和两个子类,你想要使用table-per-concrete-class映射策略映射到两个子类表。这两个子类表需要声明相同的主键,并且主键需要映射到基类映射中。您必须在基类映射中声明idcomposite-id,以便您可以向NHibernate请求具有给定ID或复合ID的基类类型的对象。你不能在子类映射中声明它们,你当然不能声明它们对于每个子类型都是不同的(这就是在子类映射中声明它们会允许你这么做),因为从强*类型面向对象的观点,这将离开理智的境界。对我而言,强打字意味着变量是静态类型的(每个变量的类型是已知的并且由编译器强制执行)并且对象是严格类型的(每个对象的类型已知且由运行)。

+0

Hrmmm ...并不完全是我拍摄的内容,但是肯定地指出了我对NHibernate的这个特定项目的兴趣。希望dba更灵活,但唉...感谢您的意见。 – nkirkes 2009-08-05 14:58:33

相关问题