2009-10-26 33 views
2

我正在使用SQL Server CE 3.5和C#与.NET Compact Framework 3.5。在我的代码中,我插入一行,然后开始一个事务,然后从表中删除该行,然后对该事务进行回滚。但是这并不能取消删除。为什么不?这里是我的代码:SQL Server CE回滚不会撤消删除

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正在执行截断,那就是您的问题。 – 2009-10-26 19:23:33

回答

6

我刚刚在微软的论坛上得到了答案。您需要使用SqlCeCommand对象的Transaction属性将SqlCeComand对象与事务相关联。

+2

更正 - 连接上的事务不会自动通过针对该连接运行的所有命令进行登记。你必须告诉命令参与交易。 – 2009-11-26 01:17:25