我有两个不同的(没有继承)接口:
IInvestable
和IPricable
和两个班:
IndexClass
和FundClass
存储在我的数据库中的单独表格中。
IndexClass
是IPriceable
FundClass
为IPriceable
和IInvestable
。
我需要一张表来存储IndexClass
和FundClass
的价格
我需要一张表来存储FundClasses
投资的内容。
一种方法可能是拥有两个表:Pricable
和Investable
,它们只有一个ID列。
然后在IndexClass
上设置一个外键:PricableID
FundClass
上还有两个外键:PricableID
和InvestableID
。
然后我的价格只是链接到PricableID
,我的投资只是链接到InvestmentID
,因为这些将是唯一的。
另外,我可以在Price表上有FundClassID
和IndexClassID
列,但这似乎不具备可扩展性,似乎很难处理。
然后让NHibernate搞清楚 - 我仍然不是100%肯定它会喜欢!
我无法在互联网上找到任何关于存储多重继承的建议,并想知道是否有人对此有任何想法,或者他们过去是否处理过类似事情?
由于
斯图
答案 0 :(得分:0)
在这种情况下,我赞成合成而不是继承。例如,这些类可能是PriceInfo和InvestmentInfo,您的IInvestable和IPricable接口将包含这些类型的属性。
编辑:生成的数据库架构如下所示:
PriceInfo
---------
PriceInfoId
[Other Stuff]
InvestmentInfo
--------------
InvestmentInfoId
[Other Stuff]
IndexClass
---------
IndexClassId
PriceInfoId
[Other Stuff]
FundClass
---------
FundClassId
PriceInfoId
InvestmentInfoId
[Other Stuff]
答案 1 :(得分:0)
所以我最终得到了以下结构:
FundClass:FundClassID(etc)
FundClassReturn:FundClassID,ReturnID
IndexClass:IndexClassID(etc)
IndexClassReturn:IndexClassID,ReturnID
返回:ReturnID(等)
然后我只是在NHibernate映射文件中对它进行排序。我试图过于老式,并使其过于以数据库为中心。无论如何,我所拥有的一切都被写入接口,所以我只是查询接口,让NHibernate用内在的多态来处理其余部分。像魅力一样工作!
感谢您的帮助 - 这激发了对最终解决方案的想法。