我有一個具有執行特定工作的實體模型的dll。我的主應用程序使用該dll,但也有自己的實體模型與數據庫交談。是否有可能爲兩個不同的上下文使用一個事務?
當我在主應用程序中保存一個觸發dll實體上下文保存的實體時,是否可以將它們都包裝在一個事務中?
我有一個具有執行特定工作的實體模型的dll。我的主應用程序使用該dll,但也有自己的實體模型與數據庫交談。是否有可能爲兩個不同的上下文使用一個事務?
當我在主應用程序中保存一個觸發dll實體上下文保存的實體時,是否可以將它們都包裝在一個事務中?
您可以使用TransactionScope
。
但是,您應該知道,交易將由MSDTC處理,而不是單獨在數據庫級別處理。
更好的選擇是使用工作單元和存儲庫模式來確保事件鏈(單個工作單元)中的每個操作使用相同的上下文。在一組操作結束時,您可以調用一次使用數據庫事務的SaveChanges。
這兩種情況是不同的。我有一個名爲Location.edmx的實體模型,該模型知道如何存儲位置。 在我的主應用程序和名爲Artifacts.edmx的實體模型中,它知道如何存儲工件。
工件有一個位置。在神器實體代碼,我會寫:
public void Save()
{
context1.saveChanges();
location.Save()
}
在location.Save
()
這將是
public void Save()
{
context2.saveChanges();
}
注意,這兩種方法都在不同的DLL。
如何在我的示例中使用transactionScope?