Linq to sql 多个对象的Linq到SQL InsertOnSubmit

Linq to sql 多个对象的Linq到SQL InsertOnSubmit,linq-to-sql,submitchanges,insertonsubmit,Linq To Sql,Submitchanges,Insertonsubmit,我对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 te

我对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();
我只将第一个实体测试注释标题1插入到数据库中。如果在每个InsertOnSubmit之后放置SubmitChanges,则所有行都将成功插入

上述类型都是从Notes类继承的,因此都插入到同一个表中

然而,对于非派生类,我也遇到了同样的问题


我花了很长时间研究这个问题,但找不到我做错了什么。InsertOnSubmit/SubmitChanges的整个思想是,您可以进行多个更改,因此我缺少了一些简单的内容。

问题是我在实体类中重写了Equals,因此具有相同Id的实体被视为相同的实体。显然,LINQtoSQL在某个时候使用了这个方法,结果是所有新实体都是相等的,因为它们的Id都是0


谢谢乔纳森做我的朋友

你有什么例外吗?没有例外,它就是不起作用。我刚刚想到,可能是由于Id字段是自动递增的数据库分配的标识字段,所以Linq to SQL无法区分它们。事实上,当我写这篇文章的时候,我打赌这是因为我已经覆盖了Id上的等于来比较。我会检查一下。