有没有办法将整个查询定义为表的filterClause?示例:我有一个联系人表。每个联系人都属于UserId。对于给定的用户,我不仅要同步他自己的联系人,还要获取他所连接的用户的联系人。所以我试图使用配置和代码生成工具来实现这种情况。
以下代码是否可能?
<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 :(得分:0)
我使用了大量的子选择和连接作为过滤器。我不确定你的filterclause是否100%正确(我不是sql向导,但我不确定你可以在IN子句中组合变量和select),我会写如下:
[side] .UserId = @UserId或[side] .UserId IN(选择 来自[Contact]的RepresentsUserId,其中ConnectionStatus = 5,UserId = @UserId)
或者甚至
[side] .UserId IN(选择@UserId UNION从[Contact]中选择RepresentsUserId,其中ConnectionStatus = 5,UserId = @UserId)
在任何情况下,如果您的sql是正确的,这应该工作。同步框架过滤器子句中支持子选择和内部联接。