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时,它认为所有新对象都是相同的,并且除了第一个之外基本上都忽略了每个对象.