InsertAllOnSubmit只是插入第一个数据记录(InsertAllOnSubmit onl

2019-06-24 18:21发布

我注意到今天我的导入服务一个奇怪的行为,当我试图导入多个数据记录。

当我不喜欢这样,所有的数据记录导入和自动递增的值是正确的( 见截图 ):

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

当我尝试像这样,仅第一个数据记录GET是一个正确的自动递增值( 见截图 ):

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

同样在这里:

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

没有任何人有一个想法,为什么它是这样呢? 所有这三个变量应根据我的理解导入所有数据记录,但缺少自动递增值表明它不是这样的。

[编辑]增加了两个屏幕截图。

Answer 1:

我有同样的问题,它变成了压倒一切的映射类的Equals问题所致。 我Equals方法只是比较主键字段这是一个标识字段。 当然,当对象是新的,所有的身份是0,所以InsertAllOnSubmit被调用时,它认为所有新对象是相同的,基本忽略每一个,但第一。



Answer 2:

不明白为什么第二个变化是不行的,但是,应该不是最后一个是:

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();


Answer 3:

至于其他用户有同样的奇怪的行为,我所举报的问题,因为微软的一个错误:

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



Answer 4:

我在几分钟前碰到了这个问题。

我的问题是,我发送到列表InsertAllOnSubmit<mappedClass>()是完全源自单一实例对象的mappedClass 。 这取决于我想要添加到数据库,然后重新添加实例的列表视图模型的实例,我修改的成员。

似乎是一个新手的错误,但它可能是一些以检查是否有人仍然有这个问题!



Answer 5:

只需使用这一个,完美的解决方案。
正如,我们有像“TestTable的”一个新的实体。
初始化内部的这个实体for循环

TestTable objTable = new TestTable ();

而在清单列表对象添加实体项目,以及<TestTable>在for循环。
而移动InsertAllOnSubmit()外的for循环,现在它会必须工作。



文章来源: InsertAllOnSubmit only inserts first data record