Toa*_*oad 1 sql linq concurrency
我正在使用 linq 从数据库中的表中检索行。现在我只更新 1 列。然后我将其更新回数据库。
一切进展顺利,除了任何其他字段被另一个进程/线程/用户更改的时候在这种情况下,我得到一个异常(乐观并发),告诉我要注意,自从我上次获取对象以来,值已被更改与 linq 。
由于我只对这一列感兴趣,我可以告诉 linq 只更新这一列并忽略其他列吗?(并警告我这一栏确实已更改)
右
您可以通过捕获ChangeConflictException来检测并解决并发问题:
using (var db = new MyDataContext())
{
var row = db.MyTable.Single(x => x.Id == tableId); // Getting the row
row.Column = columnNewValue; // Assign the new value
try
{
db.SubmitChanges();
}
catch (ChangeConflictException)
{
db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);
db.SubmitChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
使用刷新模式。KeepChanges对客户端对象所做的所有更改都将保留,并且其他列上其他用户/进程/线程的更改将被合并。
在您的情况下,只有您的列会被更改。
推荐文章:
| 归档时间: |
|
| 查看次数: |
7456 次 |
| 最近记录: |