如何解决在Sync Framework 2.1中同步相对表
| 我正在尝试在Sync Framework 2.1的帮助下将sql Express 2008与sql Compact 3.5同步 我有2张桌子 客户(PK ID,字符串名称) 订单(PK ID,int价格,字符串 名称(FK Customer_Id) 我使用以下代码public static void CreateScope(string userName)
{
var serverConn = new sqlConnection(@\"Data Source=.\\sqlEXPRESS; Initial Catalog=Test; Integrated Security=True\");
var scopeDescription = new DbSyncScopeDescription(string.Format(\"Customer-{0}\",userID));
var customersTable = sqlSyncDescriptionBuilder.GetDescriptionForTable(\"Customers\",serverConn);
var ordersTable = sqlSyncDescriptionBuilder.GetDescriptionForTable(\"Orders\",serverConn);
ordersTable.Constraints.Add(\"FK_Customer_Id\",\"Customers\",\"Orders\",\"Id\",\"Customer_Id\");
scopeDesc.Tables.Add(azmanottable);
scopeDesc.Tables.Add(customersTable);
var serverProvision = new sqlSyncScopeProvisioning(serverConn,scopeDesc);
serverProvision.SetCreateTableDefault(DbSyncCreationoption.Skip);
serverProvision.Tables[\"Customers\"].AddFilterColumn(\"CustumerName\");
serverProvision.Tables[\"Customers\"].FilterClause = string.Format(\"[side].[CustumerName] = \'{0}\'\",userName);
serverProvision.Apply();
}
在同步期间,我确实收到过滤后的\“ Customers \”表,但是当我只想要此数据的子集时,我也收到完整的订单表,我的意思是仅属于特定客户的订单。
我已经尝试过在网上找到的所有选项,例如更改手动添加外键的插入顺序,但仍然没有成功。
提前致谢
解决方法
我认为您已经在这里回答了您的问题:http://social.msdn.microsoft.com/Forums/en-US/syncdevdiscussions/thread/82235748-fac2-435f-8035-8d8809aeb82d
如前所述,Sync Fx分别/独立地同步表。要过滤订单表以仅同步属于已同步客户行的行,还必须过滤订单表:
serverProvision.Tables[\"Orders\"].AddFilterColumn(\"CustomerId\");
serverProvision.Tables[\"Customers\"].FilterClause = string.Format(\"[side].[CustomerId] in (Select CustomerId from Customers_tracking where CustomerName = \'{0}\'\",userName);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。