0

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 の全体的な考え方は、複数の変更を行うことができるようにすることです。そのため、欠けている単純なものがあるはずです。

4

1 に答える 1

0

問題は、同じ ID を持つエンティティが同じと見なされるように、エンティティ クラスで Equals をオーバーライドしたことです。明らかに、Linq to SQL はある時点でこれを使用し、すべての新しいエンティティが等しいという結果を得ています (すべての ID が 0 であるため)。

ジョナサン、私の「ラバーダック」になってくれてありがとう。

于 2010-09-08T16:30:19.157 に答える