Транзакции в Sql Server CE
От: vl690001x Россия  
Дата: 22.11.10 14:35
Оценка:
Подскажите как использовать транзакции в SQL SERVER CE ???
Есть такой код:

using (DbConnection cn = (DbType == DBTYPE.SqlCe ? (DbConnection)(new SqlCeConnection(ConnectionString)) : (DbConnection)(new SqlConnection(ConnectionString))))
{
cn.Open();
DbCommand cmd = cn.CreateCommand();
cmd.Connection = cn;
DbTransaction transaction = cn.BeginTransaction();
cmd.Transaction = transaction;
try
{
cmd.CommandText = "DELETE FROM Users";
cmd.ExecuteNonQuery();

//тут производим вставку в таблицу Users нескольких строк...

transaction.Commit();
}
catch (Exception ex)
{
MessageBox.Show("Не удалось сохранить изменения " + ex.Message, "Ошибка");
transaction.Rollback();
}
}


Вылазиет ошибка:

SQL Server Compact timed out waiting for a lock. The default lock time is 2000ms for devices and 5000ms for desktops. The default lock timeout can be increased in the connection string using the ssce: default lock timeout property. [ Session id = 2,Thread id = 4624,Process id = 2792,Table name = Users,Conflict type = x lock (x blocks),Resource = PAG (idx): 1032 ]


Думаю, это как-то связано с уровнями изоляции транзакций. Потому что если убрать операторы вставки строк, все работает, т.е. сами по себе транзакции работают, но в одной транзакции не могут выполняться вместе некоторые команды. Как это исправить? И еще: все должно работать и в Sql Server 2005, без изменений, через объекты базовых классов.
sql server ce транзакции ado.net
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.