0

我有两个不同的(无继承)接口:
IInvestableIPricable
两个类: 它们存储在我的数据库中的单独表中
IndexClassFundClass

IndexClassIPriceable
FundClassIPriceableIInvestable

我需要一张表来存储价格,IndexClassFundClass
我需要一张表来存储FundClasses投资的价格。

一种方法可能是有两个表:Pricable其中Investable只有一个 ID 列。
然后在 : 上有一个外键 在 :IndexClass和.上PricableID
也有两个外键。FundClassPricableIDInvestableID

然后我的价格简单地链接到PricableID,我的投资简单地链接到,InvestmentID因为这些都是独一无二的。

或者,我可以在 Price 表上有FundClassIDIndexClassID,但这似乎不可扩展,并且似乎很难使用。

然后让 NHibernate 弄清楚——我仍然不能 100% 确定它会喜欢它!

我在互联网上真的找不到任何关于存储多重继承的建议,我想知道是否有人对此有任何想法,或者他们过去是否解决过类似的问题?

谢谢

斯图

4

2 回答 2

0

在这种情况下,我更倾向于组合而不是继承。例如,这些类可以是 PriceInfo 和 InvestmentInfo,而您的 IInvestable 和 IPricable 接口将包括这些类型的属性。

编辑:生成的数据库模式看起来像这样:

PriceInfo
---------
PriceInfoId
[Other Stuff]

InvestmentInfo
--------------
InvestmentInfoId
[Other Stuff]

IndexClass
---------
IndexClassId
PriceInfoId
[Other Stuff]

FundClass
---------
FundClassId
PriceInfoId
InvestmentInfoId
[Other Stuff]
于 2009-09-29T15:14:09.443 回答
0

所以我最终得到了以下结构:

FundClass: FundClassID (etc)
FundClassReturn:FundClassID, ReturnID
IndexClass: IndexClassID (etc)
IndexClassReturn: IndexClassID, ReturnID
Return: ReturnID (etc)

然后我只需在 NHibernate 映射文件中对其进行排序。我试图过时并且过于以数据库为中心。无论如何,我所拥有的一切都写入接口,所以我只需查询接口并让 NHibernate 用内在多态性处理其余部分。奇迹般有效!

不过感谢您的帮助 - 它激发了最终解决方案的想法。

于 2009-10-27T14:58:51.610 回答