0

私は 2 つの異なる (継承なし) インターフェイスを持っています:
IInvestableandIPricable
と 2 つのクラス:
IndexClassandFundClass
は、DB の別のテーブルに格納されています。

IndexClassははおよび。IPriceable
FundClass_IPriceableIInvestable

に対する価格を格納するテーブルが必要でIndexClassあり、投資されFundClass
ている格納するテーブルが必要です。FundClasses

1 つの方法は、2 つのテーブルを作成することです:PricableおよびInvestableID 列だけを持つテーブルです。
次に、外部キーをIndexClass:とPricableID
に 2 つの外部キーも設定しFundClassます。PricableIDInvestableID

次に、私の価格は単純に にリンクし、PricableID私の投資は単純に にリンクしInvestmentIDます。これらは一意であるためです。

別の方法として、Price テーブルに列を作成することもできFundClassIDますIndexClassIDが、これはスケーラブルではないようで、操作が難しいようです。

それから NHibernate にそれを理解させてください。

多重継承を保存するための推奨事項をインターネット上で実際に見つけることができず、誰かがこれについて何かアイデアを持っているか、過去に同様のことに取り組んだことがあるかどうか疑問に思いましたか?

ありがとう

ストゥ

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 (など)
FundClassReturn:FundClassID、ReturnID
IndexClass: IndexClassID (など)
IndexClassReturn: IndexClassID、ReturnID
Return: ReturnID (など)

次に、NHibernate マッピング ファイルでこれを並べ替えるだけです。私はあまりにも時代遅れになりすぎて、あまりにもDB中心にしようとしていました. とにかく、私が持っているものはすべてインターフェースに書かれているので、単純にインターフェースを照会し、NHibernate に組み込みポリモーフィズムで残りを処理させます。魔法のように動作します!

助けてくれてありがとう - それは最終的な解決策についての考えを引き起こしました.

于 2009-10-27T14:58:51.610 に答える