2011-04-05 75 views
0

我正在使用Microsoft Sync Frameowrk,它带来了我的表,但它没有拉过外键?我已经确定父母(PK表)首先被带过来,因为我认为会导致FK失败。微软同步 - 没有带来外键

我在这里遗漏的是不允许FKs带同步?

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

任何建议将不胜感激。

谢谢,

小号

回答

2

同步Fx的犯规规定FKS和比PK其他其他约束。你将不得不编写你的FK并通过编程来应用它们。

+0

感谢@JuneT我欣赏它从你的数据库中的外键 – scarpacci 2011-04-06 12:53:52

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/