У меня есть следующий метод:
public void SaveReferenceUpdates(ReferenceUpdatesDataContract updates)
{
mTransaction = Connection.BeginTransaction();
try
{
// Do all the updates to get the database inline with the contract.
updates.UpdateFromContract();
// Do all the deletes to get the database inline with the contract.
updates.DeletesFromContract();
try{mTransaction.Commit();}
catch{throw;}
mTransaction = null;
}
catch (Exception e)
{
mTransaction.Rollback();
mTransaction = null;
throw;
}
}
(я вынул все свои операторы регистрации и свернул несколько методов, чтобы сделать это более читабельным.)
Странно то,иногда (очень очень случайно) mTransaction
становится нулевым, когда он достигает шага фиксации.(Поскольку это происходит так случайно, я не смог увидеть, является ли он нулевым, когда он получает транзакцию из соединения.)
Этот метод вызывается в двух местах.Один из них - когда пользователь входит в мое приложение, а другой - когда пользователь какое-то время неактивен (на основе таймера, который отключает пользовательский ввод).
Я озадачен тем, что можетзаставить SqlCeTransaction
(mTransaction
) быть нулевым.(В справке ничего не говорится о возвращении BeginTransaction null
.)