C# SQL Server CE回滚不会撤消删除

C# SQL Server CE回滚不会撤消删除,c#,.net,compact-framework,sql-server-ce,C#,.net,Compact Framework,Sql Server Ce,我正在使用SQL Server CE 3.5和C#以及.NET Compact Framework 3.5。在我的代码中,我插入一行,然后启动一个事务,然后从表中删除该行,然后对该事务执行回滚。但这并不能撤消删除操作。为什么不呢?这是我的密码: SqlCeConnection conn = ConnectionSingleton.Instance; conn.Open(); UsersTable table = new UsersTable(); table.DeleteAll(); Messa

我正在使用SQL Server CE 3.5和C#以及.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之前,一切都按预期进行。这表示回滚没有撤消删除操作。

我刚刚在Microsoft论坛上得到了答复。您需要使用SqlCeCommand对象的事务属性将SqlCeCommand对象与事务关联。

如果DeleteAll正在执行截断,这就是您的问题所在。正确-连接上的事务不会被针对该连接运行的所有命令自动登记。您必须告诉命令参与事务。