2009-10-26 59 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