C# Microsoft同步-不带外键

C# Microsoft同步-不带外键,c#,sql-server-2008,microsoft-sync-framework,C#,Sql Server 2008,Microsoft Sync Framework,我使用的是Microsoft Sync Frameowrk,它正在将我的表带过来,但它没有拉过来外键?我已经确保首先带来父级(PK表),因为我假设这会导致FKs失败 我在这里遗漏了什么不允许FKs与同步同步 使用SQL Server 2008 R2和SQL Server 2008 R2 Express。我相信我正在使用同步2.1框架 如有任何建议,将不胜感激 谢谢 S同步外汇不提供FKs和PK以外的其他约束。您必须编写FK脚本并以编程方式应用它们。ServerSyncProvider创建一个数据

我使用的是Microsoft Sync Frameowrk,它正在将我的表带过来,但它没有拉过来外键?我已经确保首先带来父级(PK表),因为我假设这会导致FKs失败

我在这里遗漏了什么不允许FKs与同步同步

使用SQL Server 2008 R2和SQL Server 2008 R2 Express。我相信我正在使用同步2.1框架

如有任何建议,将不胜感激

谢谢


S

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

ServerSyncProvider创建一个数据集,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;
}
public覆盖SyncSchema GetSchema(集合表名,SyncSession SyncSession)
{
var schema=base.GetSchema(表名,syncSession);
schema.SchemaDataSet.Tables[“Table1”].Constraints.Add(newforeignkeyconstraint(…);
返回模式;
}
ClientSyncProvider将根据在数据集中找到的内容在外键中编写脚本


当然,您可能希望通过编程方式从数据库中取出外键,如

Thank@JuneT我很感激