Pergunta

Estou usando o SQL Server CE 3.5 e C # com o .NET Compact Framework 3.5. No meu código eu estou inserindo uma linha, em seguida, iniciar uma transação, em seguida, excluir essa linha de uma tabela, e depois fazer uma reversão nessa transação. Mas isso não quer desfazer a exclusão. Por que não? Aqui está o meu código:

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());

As mensagens indicam que tudo funciona como esperado até o fim, onde a tabela tem uma contagem de 0 indicando a reversão não desfazer a exclusão.

Foi útil?

Solução

Eu só tenho ele respondeu no forum da Microsoft. Você precisa associar o objeto SqlCeComand com a transação usando a propriedade Transaction do objeto SqlCeCommand.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top