LINQ to SQLで継承を使用した場合の注意

LINQ to SQLでは、クラスの継承構造をRDBのテーブルで疑似的に表現することができる。
具体的な使い方については、他のサイトに優れたものがあるのでそちらを参照されたい。

『(C#によるプログラミング入門)―[雑記] O/R インピーダンスミスマッチ(クラスの継承)』
http://ufcpp.net/study/csharp/sp3_ormismatch2.html

RDBでも継承構造を使うことができれば、よりO/Rマッピングインピーダンス ミスマッチが軽減されるが、制約も存在する。継承した派生クラスに対する他のクラスとの関連を付けることができないのだ。
LINQ to SQLの継承クラスでは、最上位の基底クラスだけが主キーを持つことができる。従って、主キーを参照する他のテーブルからの関連は、派生クラスで持つことができず、全て最上位の基底クラスへ関連を接続することしかできない。