Microsoft Sync - 不带外键

时间:2011-04-05 20:22:13

标签: c# sql-server-2008 microsoft-sync-framework

我正在使用Microsoft Sync Frameowrk,它正在带来我的桌子,但它不是在拉动外键吗?我确保将父(PK表)带到第一位,因为我认为会导致FK失败。

我在这里缺少的是不允许FK带同步?

使用SQL Server 2008 R2和SQL Server 2008 R2 Express。我相信我正在使用Sync 2.1 Framework。

任何建议都将不胜感激。

谢谢,

取值

2 个答案:

答案 0 :(得分:2)

同步Fx不提供除PK之外的FK和其他约束。你必须编写你的FK脚本并以编程方式应用它们。

答案 1 :(得分:0)

ServerSyncProvider创建一个DataSet,ClientSyncProvider用它来填充客户端数据库上的表。默认情况下提供的功能(如您所述)不包括外键约束。 (我不知道为什么......这似乎有意义)

最简单的方法是覆盖ServerSyncProvider的GetSchema方法,如下所示:

public override SyncSchema GetSchema(Collection<string> tableNames,SyncSession syncSession)
{
  var schema = base.GetSchema(tableNames,syncSession);
  schema.SchemaDataSet.Tables["Table1"].Constraints.Add(new ForeignKeyConstraint(...));
  return schema;
}

ClientSyncProvider将根据数据集中的内容

在外键中编写脚本

当然,您可能希望以编程方式从数据库中提取外键,如http://blog.sqlauthority.com/2006/11/01/sql-server-query-to-display-foreign-key-relationships-and-name-of-the-constraint-for-each-table-in-database/