2010-09-08 78 views
0

我有一个Linq to SQL 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 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,则所有行均已成功插入。

上述类型都是从Note类继承的,所以都插入到同一个表中。

但是,我遇到了与非派生类相同的问题。

我花了很长时间看这个,但无法找到我做错了什么。 InsertOnSubmit/SubmitChanges的整个想法是这样,你可以做多个更改,所以一定有一些简单的我缺少的东西。

+0

你有什么异常吗? – Jonathan 2010-09-08 15:52:47

+0

没有例外,它只是不起作用。刚才我想到,也许这是由于Id字段是自动递增数据库分配的标识字段,所以Linq to SQL无法区分它们。事实上,虽然我只是写这篇文章,但我敢打赌,这是因为我有重写等于比较Id。我会检查一下。 – Darren 2010-09-08 15:58:54

回答

0

问题是我在我的实体类中覆盖了Equals,因此具有相同Id的实体被认为是相同的。显然,Linq to SQL在某些时候正在使用它,并得到所有新实体都相等的结果(因为它们都有Id)。

感谢乔纳森是我的"Rubber Duck"