Csharp/C#教程:“SubmitChanges()”上的LINQ to SQL“1/2更新失败”分享


“SubmitChanges()”上的LINQ to SQL“1/2更新失败”

我正在使用LINQ to SQL更新类型X的对象及其子Y,然后提交更改并获取此错误

示例代码

X objX = _context.X.ToList().Where(x => x.DeletedOn == null).First(); objX.DeletedOn = DateTime.Now; EntitySet objYs = objX.Ys; Y objY = objYs[0]; objY.DeletedOn = DateTime.Now; _context.SubmitChanges(); 

在SubmitChanges()上,我得到一个例外“1 of 2 Updates failed”,没有其他信息说明为什么会发生这种情况。 有任何想法吗?

另外,exception类型是ChangeConflictException

Sooo问题的原因是什么 – 触发器

我做了一个sql profiler,看到了

当ObjY的DeletedOn属性更新时,触发器更新了ObjX的属性(表中的值),称为CountOfX

这导致了一个错误,因为LINQ to SQL创建的SQL中包含旧的CountOfX值。

因此冲突。

如果您遇到此错误 – SQL分析器是开始调查的最佳位置

与问题无关我正在测试LINQ to SQL和ADO.net Framework,奇怪的是这个错误发生在LINQ to SQL中,而不是发生在ADO.net框架中。 但我喜欢LINQ to SQL for Lazy Loading。 等待EF获得测试版

我不确定错误的原因究竟是什么,但是您提供的示例似乎存在许多问题。

所以在这个例子中,我不确定是否有人可以推测为什么在这个例子之后建模的代码可能会破坏。

在LINQ2SQL数据上下文关系图中,选择实体和存储计数的字段。 (非规范化的数字)

现在设置UpdateCheck = Never。

我有这样的问题。 我正在调试一次运行单行。 事实certificate,另一个进程正在修改此记录。

我的手动调试过程正在减慢function的正常速度。 当我在SubmitChanges方法之后将它一直运行到一行时,它成功了。

我的场景不太常见,但是这个错误的本质与记录被另一个函数/进程取代有关。 就我而言,这是另一个过程。

上述就是C#学习教程:“SubmitChanges()”上的LINQ to SQL“1/2更新失败”分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/949059.html

(0)
上一篇 2021年11月17日
下一篇 2021年11月17日

精彩推荐