У меня есть счетчик в SQL, который нужно спускать каждый раз, когда пользователь выполняет операцию. Время от времени активность быстрая и яростная, и я получаю исключение ChangeConflictException. Это прекрасно, но когда это произойдет, я хотел бы, чтобы конечное значение представляло собой комбинацию обоих изменений.Устранение MemberChangeConflict с определенным значением
Нечто подобное
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. Как мне это сделать?
Хм, если я снова вызову SubmitChanges, ошибка может повториться, нет? – tofutim
Вы всегда можете окружать свои заявления try/catch циклом, который вышел из успешной подачи. –