1

へサブクラスIは抽象クラスStrategyBase」、及びサブクラスはの特性のいくつかを使用サブクラスStrategyA/B/C等のセットを有しますいくつかの個別のプロパティを持っています。私の質問は、これをデータベースに保存する方法です。保存要旨とデータベース

私は現在SqlMetal.exeでエンティティクラスを作成して、SqlCEとLinq-To-Sqlを使用しています。私はthis questionに3つの解決策があるのを見ましたが、これらのソリューションがSqlMetal/entityクラスでどのように動作するかはわかりません。 "具体的なテーブル継承"はおそらく手動で変更することなく動作するはずです。他の2つはどうですか?彼らは問題がありますか?

"単一テーブル継承"の場合、必要ない場合でもすべてのクラスがすべての変数を取得するわけではありませんか?そして、 "クラステーブル継承"ソリューションでは、有用な目的のためにエンティティクラスにどのようにマッピングされるのか、実際にはわかりません。私は、ビジネスオブジェクトのクラスを作成するためにこれらの部分的なエンティティクラスを拡張することに気付くかもしれません。

また、SqlMetal/Linq2Sqlの代わりにEntityFrameworkに移動することも考えられます。実装するのが簡単なスキーマに違いがあるかどうかを知ることもできます。

注目すべき重要な点はです。私は常に新しい戦略を開発します。プログラムコードを修正する必要があります。おそらくデータベースshcemaです。新しい戦略を追加するとき

申し訳ありませんが、ご質問は「すべての場所に」ありますが、アドバイスを受けることができるように、ここでは明確な長所と短所があります。 ?

乾杯!

+0

Entity Framework 4でTPT/TPHを使用します。モデルを生成し、POCOを生成し、継承を設定し、ロックンロールします。十分に言った。 – RPM1984

答えて

2

実際、この正確な質問は非常に多くの質問を受け、answered many timesです。おそらく、データベース用語を使用して検索していないでしょう。

問題は、オブジェクト指向ではないオブジェクトの領域でオブジェクト指向用語と思考を適用することです。通常のストレートフォワードタスクは非常に複雑で制限されています。

Martin Fowlerの書籍とScott Amblerの書籍は、多くの場合、this answerから始まり、12月10日で始まる詳細は1ドルの価値がありません。

まだ質問がある場合は、コメントを投稿してください。

0

1つのオプションは、StrategyBaseSerializableとすると、データベースに文字列として格納できます。文字列の大きさはオブジェクトのサイズに左右されますが、データベースフィールドnvarchar(1024)またはnvarchar(max)を作成することができます。最終的には、オブジェクト全体がstringという1つのテーブルフィールドに格納されます。

また、あなたのリンクが見逃せないため、各クラスを模倣するテーブルを作成するだけで、各クラスオブジェクトはテーブルのフィールドになります。

関連する問題