簡體   English   中英

是否可以在兩個不同的上下文中使用一個事務?

[英]Is it possible to use one transaction for two different contexts?

我有一個具有執行特定工作的實體模型的DLL。 我的主應用程序使用該dll,但也有自己的實體模型與DB通信。

當我在主應用程序中保存一個觸發dll實體上下文保存的實體時,我可以將它們包裝在一個事務中嗎?

您可以使用TransactionScope

但是,您應該知道,事務將由MSDTC處理,而不是僅在數據庫級別處理。

更好的選擇是使用工作單元和存儲庫模式來確保事件鏈中的每個操作(單個工作單元)使用相同的上下文。 在操作集的末尾,您將一次調用SaveChanges,這將使用數據庫事務。

這兩種情況不同。 我在dll中有一個名為Location.edmx的實體模型,它知道如何存儲位置。 在主應用程序中,我有一個名為Artifacts.edmx的實體模型,它知道如何存儲工件。

工件有一個位置。 在工件實體代碼中,我會寫:

public void Save()
{
context1.saveChanges();
location.Save()
}

在location.Save()

這將是

public void Save()
{
context2.saveChanges();
}

請注意,這兩種方法都在不同的dll中。

我如何在我的示例中使用transactionScope?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM