【发布时间】:2014-12-09 11:37:17
【问题描述】:
我正在我的 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);
当为用户分配特定操作时,我的同步应该发生。
因此,如果我使用操作 x 创建用户 1,则该用户将被同步。如果我创建一个没有操作 x 的用户 2,它将不会被同步。到目前为止一切顺利。
如果现在我将操作 x 分配给用户 2 并重新应用同步,则用户 2 仍未同步。 我注意到的是,在我的“ApplyChangeFailed”事件中,我得到了一个外键违规异常:
本地提供程序应用更改失败:INSERT 语句与 FOREIGN KEY 约束“FK_UserActions_Users”冲突。冲突发生在数据库“LocalGenUM”、表“dbo.Users”、列“Id”中。
我已经坚持了好几个星期了。有人可以帮忙吗?
【问题讨论】:
标签: c# sql-server microsoft-sync-framework