Откат SQL Server CE не отменяет удаление

2

Я использую SQL Server CE 3.5 и С# с .NET Compact Framework 3.5. В моем коде я вставляю строку, затем начинаю транзакцию, затем удаляю эту строку из таблицы, а затем выполняю откат этой транзакции. Но это не отменяет удаление. Почему нет? Вот мой код:

SqlCeConnection conn = ConnectionSingleton.Instance;
conn.Open();
UsersTable table = new UsersTable();
table.DeleteAll();
MessageBox.Show("user count in beginning after delete: " + table.CountAll());
table.Insert(
new User(){Id = 0, IsManager = true, Pwd = "1234", Username = "Me"});
MessageBox.Show("user count after insert: " + table.CountAll());
SqlCeTransaction transaction = conn.BeginTransaction();
table.DeleteAll();
transaction.Rollback();
transaction.Dispose();
MessageBox.Show("user count after rollback delete all: " + table.CountAll());

Сообщения показывают, что все работает так, как ожидалось, до самого конца, где таблица имеет счетчик 0, указывающий, что откат не отменяет удаление.

  • 0
    Если DeleteAll делает усечение, это ваша проблема прямо здесь.
Теги:
sql-server-ce
compact-framework

1 ответ

6
Лучший ответ

Я только что получил ответ на форуме Microsoft. Вам нужно связать объект SqlCeComand с транзакцией, используя свойство транзакции объекта SqlCeCommand.

  • 2
    Правильно - транзакции в соединении не зачисляются автоматически всеми командами, выполняемыми для этого соединения. Вы должны указать команду для участия в транзакции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню