2011-05-31 46 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等,這應該工作。同步框架過濾器子句支持子選擇和內部聯接。