2011-04-18 56 views
2

我遇到這種情況,我使用從主數據庫到故障轉移數據庫的SQL Server事務複製。我有一個主站點,我的故障轉移網站正在使用我的故障轉移數據庫。事務複製活動時實體框架模型的問題

這兩個網站(使用實體框架)是相同的(數據庫也是如此)。

我的問題是,如果我的複製處於活動狀態,某些操作會在故障切換網站上崩潰。一旦停用我的複製,操作就會正常進行。

我的猜測是我的故障轉移網站的EntityModel和暴露給複製時的數據庫之間存在一些併發問題。

有沒有人遇到類似的問題?任何有事務複製+實體框架經驗的人?

這裏是例外,我得到:

at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) 
at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) 
at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) 
at System.Data.Objects.ObjectContext.SaveChanges() 
at Library.XXXXEntities.Context_SavingChanges(Object sender, EventArgs e) 
in C:\SVN\Branches\Prod - 1.68.7\Library\LINQ\Audit.cs:line 38 
at System.Data.Objects.ObjectContext.OnSavingChanges() 
at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) 
at System.Data.Objects.ObjectContext.SaveChanges() at Library.Provider.Save() 
in C:\SVN\Branches\Prod - 1.68.7\Library\XXXX.Provider.cs:line 57 
at XXXX.mnuExportGeneric.RecreatePositionsToBeUnique() 
at XXXX.mnuExportGeneric.Export(Int32 programId, DirectoryInfo directoryDestination, Boolean exportInventory, Int32 CurrencyListID, Int32 configurationId, Boolean subFolder) 
at XXXX.mnuExport.Export(Int32 ProgramId, String TempExportFolder, String ExportFolder, TreeView treeViewErreurs, Int32 CurrencyListID, Boolean exportInventory, Int32[] configurationsId) 

有接縫要與映射出了問題,但只有當事務複製活躍。

更新:我已經走出完全我的應用程序環境在的,只是試圖插入表中的一個新行中我的故障恢復數據庫時的複製「現有」不僅活躍接縫是非法的。 Tomorow我會嘗試將複製完全刪除...或者更加劇烈的更改,如...

謝謝!

+0

爲什麼在故障轉移應用程序上執行更改?這些變化不會反映回主數據庫。你得到什麼類型的異常以及你的實體使用什麼併發檢查? – 2011-04-18 20:56:26

+0

我正在執行故障轉移應用程序上的更改作爲安全措施,以檢查一切正常工作。我正在啓動的操作是標準的「業務」操作。我的實體正在使用默認的併發性檢查(我認爲這是AppendOnly)。 – 2011-04-18 21:11:18

回答

1

這可能不是EF的問題,但更多的是您的複製設置問題。

SQL Server會允許其中的變化可以在任一節點進行復制,但這需要企業版,請參閱:http://technet.microsoft.com/en-us/library/ms151196.aspx

這可能是你正在嘗試更新只讀副本。

+0

事實上,我一直在閱讀和Transactionnal複製使我的複製數據庫只讀。我看到了複製過程使用的特殊存儲過程。我想這是有道理的。謝謝! – 2011-04-27 12:39:01