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

sol*_*man 9 c# sql-server linq-to-sql

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

示例代码

X objX = _context.X.ToList().Where(x => x.DeletedOn == null).First();
objX.DeletedOn = DateTime.Now;

EntitySet<Y> objYs = objX.Ys;
Y objY = objYs[0];
objY.DeletedOn = DateTime.Now;

_context.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

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

另外,异常类型是ChangeConflictException

sol*_*man 12

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

我做了一个SQL分析器,看到了

当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获得测试版