我在SQL中有一个计数器,每次用户执行活动时,该计数器都需要关闭。有时活动是快速而激烈的,我最终遇到了ChangeConflictException。很好,但是当发生这种情况时,我希望最终值是两个更改的组合。
像这样
try
{
db.SubmitChanges();
}
catch (ChangeConflictException cce)
{
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
foreach (MemberChangeConflict mcc in occ.MemberConflicts)
{
if (mcc.DatabaseValue is int)
{
mcc.FinalValue = mcc.DatabaseValue + mcc.CurrentValue - mcc.OriginalValue;
}
}
}
}
样本值,原始值为50,当前值为30(减去20),数据库值为40(从原始值减去10)。最终值应为40-20 = 20。
当然,没有mcc.FinalValue这样的东西。我该怎么做呢?
最佳答案
使用MemberChangeConflict.Resolve
方法。
mcc.Resolve(mcc.DatabaseValue + mcc.CurrentValue - mcc.OriginalValue);
(也不要忘记在解决冲突后再次调用
SubmitChanges
。)关于c# - 使用特定值解决MemberChangeConflict,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16740853/