我在我的C#windows應用程序中實現同步框架。微軟同步框架外鍵違規
我所擁有的是一個表用戶,一個表操作和一個表userActions,它們在這兩個表上都有一個外鍵。
當我在定義我的供應範圍,順序是父母則孩子:當一個用戶分配一個特定的動作
DbSyncScopeDescription scopeDesc = .....
DbSyncTableDescription users =
SqlSyncDescriptionBuilder.GetDescriptionForTable("Users", new SqlConnection(ServerConnection));
DbSyncTableDescription userActions =
SqlSyncDescriptionBuilder.GetDescriptionForTable("UserActions", new SqlConnection(ServerConnection));
userActions.Constraints.Add(new DbSyncForeignKeyConstraint("FK_UserActions_Users"));
userActions.Constraints.Add(new DbSyncForeignKeyConstraint("FK_UserActions_Actions"));
scopeDesc.Tables.Add(users);
scopeDesc.Tables.Add(userActions);
我同步應該發生。
所以,如果我創建一個用戶1與行動x,用戶同步。如果我創建了一個沒有操作x的用戶2,它將不會同步。到現在爲止還挺好。
如果現在我將操作x分配給用戶2並重新應用同步,則用戶2仍未同步。 我注意到的是,在我的「ApplyChangeFailed」事件中,我得到一個外鍵衝突異常:
本地供應商申請更改失敗:INSERT語句衝突與外鍵約束「FK_UserActions_Users」。衝突發生在數據庫「LocalGenUM」,表「dbo.Users」,列'Id'中。
我一直堅持這個星期。誰能幫忙?
你說只有動作x會被檢測到更改,因爲這是已修改的行,而不是用戶2.但即使我嘗試對兩者進行更改,同步也不起作用。什麼標誌一行改變? – Nidal 2014-12-09 15:46:50