2011-05-31 60 views
0

有没有办法将整个查询定义为filterClause的表?例如:我有一个联系人表。每个联系人都属于一个UserId。对于给定的用户,我不仅要同步他自己的联系人,还要获取他所连接的用户的联系人。所以我试图使用提供和代码生成工具来实现这种情况。FilterClause作为查询

下面的代码甚至可能吗?

<SyncTable Name="[Contact]" GlobalName="Contact" SchemaName="" 
IncludeAllColumns="true" FilterClause="[side].UserId IN (@UserId, (select 
RepresentsUserId from [Contact] where ConnectionStatus = 5 and UserId = @UserId))"> 

虽然这是有效的sql,但我不确定它是如何通过同步框架支持的。我们正在使用CTP 4版本。

回答

0

我已经使用广泛的子选择和连接作为filterclauses。我不确定您的过滤条款是否100%正确(我不是SQL向导,但我不确定您是否可以在IN子句中组合变量和select),我会按如下所示编写它:

[方] .UserId = @UserId OR [方] .UserId IN(选择从 RepresentsUserId [联系]其中ConnectionStatus = 5和用户Id = @UserId)

,或者甚至

[方] .UserId IN(从[Contact]中选择@UserId UNION select RepresentsUserId,其中ConnectionStatus = 5且UserId = @UserId)

无论如何,如果你的sql是corr等,这应该工作。同步框架过滤器子句支持子选择和内部联接。