2009-06-19 19 views
2

我期待在C#中實現類似於事務的數據庫。我正在處理多個XML文件。任何特定的XML文件都可以在處理期間調用子XML文件。處理器將開始處理子XML文件。如果初始化條件失敗或出現異常,那麼我想恢復處理父XML文件。這就是我尋找像實現這樣的事務的原因,以便我可以回滾。是否有可能實現?有人可以提供我的代碼片段或僞代碼嗎?與XML文件交易

僅供參考 - 我正在使用.NET Compact Framework。

+0

你所描述什麼樣的聲音異常處理。我沒有看到你想要與交易劃清界限。您沒有提及對文檔進行任何更改/寫入。 – Logicalmind 2009-06-19 22:14:06

+0

我知道這個問題很老,但我面臨同樣的問題。你能重新回答這個問題嗎? – Vishal 2014-10-29 09:06:52

回答

2

在緊湊的框架,我認爲你要推出自己的事務管理器。

在完整的框架,你可以有可能使用的TransactionScope和IEnlistmentNotification建的東西。您將不得不做很多工作來讓所有操作都可以進行,因爲不支持xml中的transcations。

0

而不搖自己的自定義事務管理組件,這將是難以實現的。

你不能驗證/讓您的應用程序踏上它的處理階段之前預先驗證所有的XML?

+0

COM +在Windows CE中不存在 – ctacke 2009-06-19 16:11:12

+0

@ctacke - thanks - lern2readtehquestion :) – Kev 2009-06-19 16:15:11

0

也許你可以嘗試使用顛覆。有從C#控制它的庫。因此,要開始一個事務,您只需開始工作,然後回滾一下,然後執行回滾。提交您的svn樹完成您的交易。

我不知道這是否過於簡單。很可能,但是你所描述的只是一些事務的屬性。具體來說,您已經指出您需要原子性(即能夠同時回滾對多個文件的更改)。隱含耐久性,但承諾讓你。

您還沒有提到比有初始化條件和例外以外的任何一致性約束,但據推測你的代碼可以處理這些,並強制回滾,如果任何規則被打破了。

分離要麼困難要麼簡單。這完全取決於您是否需要一次支持多個交易。是否允許您允許併發更新?如果不是,只需構建一些東西來強制對系統進行串行訪問,然後就完成了。如果您需要併發更新,我怕我的想法:-)