これは、OP が尋ねようとしていたものではないかもしれませんが、ここに入れるかもしれないと思いました。
私は最近、プロジェクトで db ポリモーフィズムのユニークなケースを経験しました。60 から 120 の可能なクラスがあり、それぞれに 30 から 40 の一意の属性の独自のセットと、すべてのクラスで約 10 から 12 の共通の属性があります。私たちは SQL-XML ルートに進むことに決め、最終的に 1 つのテーブルになりました。何かのようなもの :
PERSON (personid,persontype, name,address, phone, XMLOtherProperties)
すべての一般的なプロパティを列として含み、次に大きな XML プロパティ バッグを含みます。次に、ORM レイヤーは、XMLOtherProperties からのそれぞれのプロパティの読み取り/書き込みを担当しました。少し似ている :
public string StrangeProperty
{
get { return XMLPropertyBag["StrangeProperty"];}
set { XMLPropertyBag["StrangeProperty"]= value;}
}
(XML 列を XML ドキュメントではなく Hastable としてマッピングすることになりましたが、DAL に最も適したものを使用できます)
デザイン賞を受賞することはありませんが、可能なクラスの数が多い (または不明な) 場合は機能します。また、SQL2005 では、SQL クエリで XPATH を使用して、XML として保存されているプロパティに基づいて行を選択できます。これは、わずかなパフォーマンスの低下にすぎません。