FilterClause таблицы как запрос - PullRequest
0 голосов
/ 31 мая 2011

Есть ли способ определить весь запрос как 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.

1 Ответ

0 голосов
/ 19 июня 2011

Я использовал обширные подвыборы и объединения в качестве разделов фильтра. Я не уверен, что ваше предложение фильтра на 100% правильно (я не являюсь мастером sql, но я не уверен, что вы можете комбинировать переменную и выборку в предложении IN), я написал бы это следующим образом:

[сторона] .UserId = @UserId ИЛИ [сторона] .UserId IN (выберите Представляет собой UserId из [Contact], где ConnectionStatus = 5 и UserId = @UserId)

или, может быть, даже

[сторона] .UserId IN (выберите @UserId UNION, выберите PresentsUserId из [Контакт], где ConnectionStatus = 5 и UserId = @UserId)

В любом случае, если ваш sql правильный, это должно работать. Подвыборы и внутренние объединения поддерживаются в предложениях фильтра каркаса синхронизации.

...