Я хочу реализовать несколько общий обработчик конфликтов.
В процессе я столкнулся со случаем, когда возникает конфликт из-за попытки изменить удаленный объект.
В общем, я хочу, чтобы пользователь сам решал, сохранять ли его изменения, несмотря ни на что, или отменить их. Вот почему мой обработчик запрашивает обратную связь от пользователя.
Поэтому я хочу иметь возможность, если / когда я обнаружу удаленную сущность, повторно вставить эту сущность, если пользователь решит это сделать.
Я пытался использовать Metatable
данные ObjectChangeConflict
до Insert
объекта в Datatable
, но, хотя объект больше не находится в таблице (не отображается в контексте данных), я получить исключение, что я не могу добавить уже существующую сущность.
Мой код следующий:
GmngrDatabaseContextDataContext formDbContext;
RefreshMode UserSelectedConfilctResolutionSceme;
// resolve all conflicts according to the desires of the user
foreach (ObjectChangeConflict occ in formDbContext.ChangeConflicts)
{
occ.Resolve(UserSelectedConfilctResolutionSceme, true);
// Conflicted due to deleted object?
if (occ.IsDeleted && UserSelectedConfilctResolutionSceme == RefreshMode.KeepCurrentValues)
{
try
{
MetaTable metatable = formDbContext.Mapping.GetTable( occ.Object.GetType() );
formDbContext.GetTable( metatable.RowType.Type ).InsertOnSubmit( occ.Object );
}
catch (Exception ex)
{
string err = ex.Message;
}
}
}
formDbContext.SubmitChanges(ConflictMode.FailOnFirstConflict);
Как еще я могу выполнить эту задачу?
Заранее спасибо.