DataContext.Submit и TransactionScope
Пожалуйста, объясните мне псевдокод ниже.
Моя идея такова: 3-й SubmitChanges будет фиксировать o.Status и не будет фиксировать o.TransactionId, и мой объект будет поврежден в базе данных (я имею в виду, что он больше не будет согласованным).
XDataContext DB = .....;
XOrder o = DB.XOrders.Single(.......);
try
{
using (var t = new TransactionScope())
{
o.Status = XOrderStatus.Completed;
DB.SubmitChanges(); // 1
string s = null;
s.Trim(); // crash here;
o.TransactionId = ......; // some calculations here
DB.SubmitChanges(); // 2
t.Complete();
}
}
catch (Exception ex)
{
XEvent e = new XEvent();
e.Type = XEventType.Exception;
e.Data = .........; // some calculations here
DB.XEvents.InsertOnSubmit(e);
DB.SubmitChanges(); // 3
}
Это "лучшие практики" для моего случая?
1 ответ
Это "лучшие практики" для моего случая?
Да. Используйте один экземпляр DataContext на единицу работы.
catch (Exception ex)
{
XEvent e = new XEvent();
e.Type = XEventType.Exception;
e.Data = .........; // some calculations here
using (XDataContext dc2 = new XDataContext())
{
dc2.XEvents.InsertOnSubmit(e);
dc2.SubmitChanges(); // 3
}
}