我試圖使用Microsoft同步框架同步2 SQL Server 2005數據庫(服務器和客戶端)。數據庫中有多個表格,它們之間有很多外鍵關係。我正在使用SyncOrchestrator來同步兩個數據庫。微軟同步框架問題同步關係數據庫
string clientConnectionString = "<connection string>";
string serverConnectionString = "<connection string>";
SqlSyncProvider localProvider
= ConfigureClientProvider(clientConnectionString);
SqlSyncProvider remoteProvider
= ConfigureServerProvider(serverConnectionString);
SyncOrchestrator orchestrator = new SyncOrchestrator();
orchestrator.LocalProvider = localProvider;
orchestrator.RemoteProvider = remoteProvider;
orchestrator.Direction = SyncDirectionOrder.Download;
在功能ConfigureClientProvider和ConfigureServerProvider我初始化連接,並檢查是否範圍不退出則創建它:
public static SqlSyncProvider ConfigureClientSyncProvider()
{
SqlSyncProvider provider = new SqlSyncProvider();
provider.Connection = new SqlConnection(Configs.ConnectionString);
DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("Test1");
SqlSyncScopeProvisioning serverConfig = new SqlSyncScopeProvisioning();
if (!serverConfig.ScopeExists("Test1", (System.Data.SqlClient.SqlConnection)provider.Connection))
{
scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable
("Employees", (SqlConnection)provider.Connection));
scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable
("Profiles", (SqlConnection)provider.Connection));
scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable
("Department", (SqlConnection)provider.Connection));
serverConfig.PopulateFromScopeDescription(scopeDesc);
serverConfig.SetCreateTableDefault(DbSyncCreationOption.Skip);
serverConfig.Apply((System.Data.SqlClient.SqlConnection)provider.Connection);
}
return provider;
}
現在,當我嘗試運行同步其工作正常更新的數據,但在數據庫中存在任何插入或刪除操作時,我遇到了外鍵問題。例如
INSERT語句衝突與 外鍵約束 「FK_Employees_Departments」。該 衝突發生於數據庫 「Sync_Client」,表 「dbo.Departments」,列 'DepartmentID的'。
如果我按照表格的順序做一些改變,那麼我能夠解決一個由於刪除而出現的另一種情況。
DELETE語句衝突與 的REFERENCE約束 「FK_Employees_Departments」。該 衝突發生於數據庫 「Sync_Client」,表 「dbo.Employees」, 列 'DepartmentID的'。
沒有人有任何想法如何可以固定。我認爲同步框架無法以正確的順序執行更改。這個順序取決於幾個因素,如外鍵關係,命令的類型,例如插入,更新等。我真的被困在這裏。早期的幫助將不勝感激。
你有沒有得到這個工作,因爲我也做的完全一樣,你是和具有與FK同樣的問題。期待你的回覆。 – Belliez 2010-04-09 15:24:33
@Belliez,解決此問題的唯一方法是使用級聯刪除。這裏是另一個線程,我發佈在mdsn論壇 - http://social.microsoft.com/Forums/en-US/syncdevdiscussions/thread/0e8464a4-41a5-4897-b3d2-f14a0cf5d4b1 – 2010-04-12 04:11:00