InsertAllOnSubmit仅插入第一个数据记录

Mic*_*ent 5 c# sql-server insert linq-to-sql

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

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

public void Create(List<Property> properties)
{
    foreach (Property prop in properties) {
        dbc.Property.InsertOnSubmit(prop);
        dbc.SubmitChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

foreach (Property prop in properties) {
    dbc.Property.InsertOnSubmit(prop);
}
dbc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

同样在这里:

dbc.Property.InsertAllOnSubmit(properties);
dbc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

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

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

小智 6

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