Linq to SQL InsertOnSubmit に問題があります。これは、テーブルの最初の項目に対してのみ機能するようです。
たとえば、次のようにします。
var noteDetail1 = new NoteDetail() { Title = "Test Note Title 1", NoteText = "Test note" };
var waiverDetail1 = new WaiverDetail() { Title = "Test Waiver Title 1", NoteText = "Test waiver details text" };
var riskDetail1 = new RiskDetail() { Title = "Test Risk Title 1", NoteText = "Test risk details text" };
context.Notes.InsertOnSubmit(noteDetail1);
context.Notes.InsertOnSubmit(riskDetail1);
context.Notes.InsertOnSubmit(waiverDetail1);
context.SubmitChanges();
データベースに挿入された最初のエンティティ ("Test Note Title 1") のみを取得します。各 InsertOnSubmit の後に SubmitChanges を配置すると、すべての行が正常に挿入されます。
上記のタイプはすべて Note クラスから継承されているため、同じテーブルに挿入されます。
ただし、非派生クラスでも同じ問題が発生しています。
私はこれを長い間見てきましたが、間違ったことを見つけることができません。InsertOnSubmit/SubmitChanges の全体的な考え方は、複数の変更を行うことができるようにすることです。そのため、欠けている単純なものがあるはずです。