1
  1. 是否有無論如何找到一個DbContext是否在連接字符串中enlist = false的任何事務中登記? 我正在追蹤DbContext.Database.CurrentTransaction,但我注意到它始終爲空。爲什麼DbContext.Database.CurrentTransaction始終爲空?

  2. 我知道當enlist = false時,所有打開的連接都不會在環境事務中登記,是嗎?

  3. 如果(2)正確,如何在使用TransactionScope的事務中登記DbContext?
  4. 最後,我注意到使用DependentTransaction的克隆與多的DbContext多線程,同時爭取= false將不會促進交易分佈一個,但我不知道的情況下,一個是我仍然能夠提交和回滾enlist = false時使用依賴事務發生異常?
  5. 如果(4)不正確,則是有任何方式充分避免DistributedTransaction同時能夠打開多個連接單個事務範圍

僅供參考,目前使用Oracle數據庫;不過,未來MySQL也將開始運作。

謝謝

回答

0

我真的不能說些什麼,1,2和3。但是:

  • 分佈,事情也不是絕對清晰。但是,MS會將LTM(Lightweigt Transaction Manger)中的交易升級爲DTC(如果出現某種標準)。例如,如果您試圖在一個事務中訪問不同的數據庫。

  • 從LTM升級到DTC或升級將會被迫升級的決定是系統決定。直到現在我沒有找到一種方法來改變這種行爲。這就是爲什麼你需要考慮一般的交易。如果有可能避免多個數據庫的訪問,您可能會重新考慮您的交易。

  • 如需進一步信息I'll建議Why is my TransactionScope trying to use MSDTC when used in an EF Code First app?MSSQL Error 'The underlying provider failed on Open'How do I use TransactionScope in C#?