InsertAllOnSubmit仅插入第一个数据记录

当我尝试导入多个数据记录时,我注意到今天导入服务中出现了一个奇怪的行为。

当我这样做时,导入所有数据记录并且自动递增的值是正确的( 参见屏幕截图 ):

public void Create(List properties) { foreach (Property prop in properties) { dbc.Property.InsertOnSubmit(prop); dbc.SubmitChanges(); } } 

当我这样尝试时,只有第一个数据记录得到一个正确的自动递增值( 见截图 ):

 foreach (Property prop in properties) { dbc.Property.InsertOnSubmit(prop); } dbc.SubmitChanges(); 

同样在这里:

 dbc.Property.InsertAllOnSubmit(properties); dbc.SubmitChanges(); 

有人知道为什么会这样吗? 根据我的理解,所有三种变体都应该导入所有数据记录,但缺少的自动递增值表明它不是那种方式。

[编辑]添加了两个截图。

我遇到了同样的问题,事实certificate问题是由于覆盖了映射类的Equals。 My Equals方法仅比较作为标识字段的主键字段。 当然,当对象是新的时,所有的身份都是0.所以当调用InsertAllOnSubmit时,它认为所有新对象都是相同的,并且除了第一个之外基本上都忽略了每个对象。

不太确定为什么第二个变体不起作用,但最后一个不应该是:

 dbc.Property.InsertallOnSubmit(properties); dbc.SubmitChanges(); 

编辑

对于第二个循环尝试:

 foreach (Property prop in properties) { var newProp = new Property(); newProp = prop; dbc.Property.InsertOnSubmit(newProp); } dbc.SubmitChanges(); 

对于最后的解决方案尝试:

 dbc.Property.InsertAllOnSubmit(properties.ToList()); dbc.SubmitChanges(); 

由于其他用户具有相同的奇怪行为,我已将此问题报告为Microsoft的错误:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=483711

我几分钟前遇到过这个问题。

我的问题是我发送给InsertAllOnSubmit()的列表中充满了源自mappedClass的单个实例的mappedClass 。 我正在修改成员,具体取决于我想要添加到数据库的视图模型的实例,然后将实例重新添加到列表中。

看起来像是一个新手的错误,但如果有人仍然遇到这个问题,可能需要检查一下!

只需使用这个完美的解决方案。
因为,我们有一个像“TestTable”这样的新实体。
在for循环中初始化此实体为

 TestTable objTable = new TestTable (); 

并在for循环中添加实体项以及List 列表对象。
并在for循环外移动InsertAllOnSubmit() ,现在它必须工作。