DbUpdateConcurrencyException尝试在主行之后插入详细信息行

时间:2016-05-24 19:35:05

标签: entity-framework

无法找到并回答我的代码发生的任何事情。我正在从Web服务读取XML并向我的数据库添加行,我正在使用EF,在添加标题或主行之后,在详细行上调用SaveChanges()时会出现异常。

// master row insert
var result = 0;
using (var context = new XEntities())
{
    var masterRow = new TableName{
        x = someValue,
        ...
    };
    context.TableName.Add(masterRow);
    context.SaveChanges();
    result = masterRow.id;
}
return result;

因此,在返回插入行的id后,此插入没有问题。我调用一个函数来插入一些参数的细节,包括父ID。

那是我得到那个例外的时候:

  

DbUpdateConcurrencyException:存储更新,插入或删除   语句影响了意外的行数(0)。实体可能有   自实体加载后被修改或删除。刷新   ObjectStateManager条目。

子行的代码完全相同,当然还有自己的数据。任何想法如何调试此异常?我最好的猜测是主行上自动生成的id,但是,我在第一个SaveChanges()之后的return语句中记录了正确的id(不是0)。

编辑: 我刚刚尝试使用context.Database.ExecuteSqlCommand(查询,参数)插入我的子行,其中包含我用于实体框架的相同数据,它可以工作。但那么为什么使用context.Add(row)然后SaveChanges()不起作用? 90年代的hahahaha

打字查询是如此

0 个答案:

没有答案