我在我的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