【发布时间】:2011-08-08 04:47:19
【问题描述】:
我有一种情况,我使用 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)
映射可能存在问题,但仅当事务复制处于活动状态时。
更新:我已经完全脱离了我的应用程序环境,只是在复制“存在”时尝试在故障转移数据库的表中插入新行,而不仅仅是活动接缝非法的。明天我将尝试完全删除复制...或进行更剧烈的更改...
谢谢!
【问题讨论】:
-
为什么要对故障转移应用程序执行更改?该更改不会反映在主数据库中。您得到什么类型的异常以及您的实体使用什么并发检查?
-
我正在对故障转移应用程序执行更改作为一项安全措施,以检查一切是否正常。我发起的操作是标准的“业务”操作。而且我的实体正在使用默认的并发检查(我认为那是 AppendOnly)。
标签: sql-server entity-framework transactional-replication