2012-02-15 10 views
1

nHibernateを使ってビヘイビアーを持つクラスだけをデータベースに保存する方法があるかどうかを知りたいと思います。 どういう意味ですか?私はクラス図のようなデコレータパターンを使った解決策を持っています。 enter image description herenHibernateを使ってビヘイビアークラスを保存する

ここで私は解決しようとしている問題があります。私にはクラスClassWithStoredBehaviorInPropertyがあり、タイプIBehaviorDesiredBehaviorのプロパティを持っています。他のどこかで、私は行動を混ぜる。 var beh = new FlyBehavior(new WalkBehavior(new BatmanBehavior))を入力し、DesiredBehaviorプロパティに格納します。そして、ここに私の質問です。どのようにnHibernateでデータベースにこれを格納し、それを正しくロードするか、いくつかの回避策を講じなければならない方法がありますか?それが可能なら、それをどのようにマップするのですか?ありがとう

答えて

1

NHibernateが扱う階層的なデータ構造を持つことができます。データベースの観点から、デコレータパターンは単にコレクションではなく子ノードが1つしかない階層構造です。いくつかの紹介情報hereがあります。

「階層ごとのテーブル階層」アプローチを使用して、同じ階層のサブクラスを簡単にマップすることができます。各デコレータはテーブル内の行になり、内部デコレータを指します。あなたのテーブルでは、あなたはデータベースから取得するときに、NHibernateはインスタンス化する必要がどのような種類のクラスを知っているので、弁別子の列を使用します。明らかに、各デコレータに関連付けられた特定の動作を実現する「コード」はデータベースには存在しません。

関連する問題