无法找到并回答我的代码发生的任何事情。我正在从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
打字查询是如此