带有SqlDependency的IN运算符不起作用

时间:2015-06-22 10:23:22

标签: c# sql caching outputcache sqldependency

sqldependency是否适用于IN运算符? 我的命令是:

SELECT n.PublishedAt
FROM dbo.Navigations n
WHERE NavigationGroupId IN (SELECT ng.Id FROM dbo.NavigationGroups ng
                            WHERE ng.SiteId = 1
                              AND ng.IsActive = 1
                              AND ng.[Type]= 'Secondary')
  AND n.IsActive = 1

我看了MSDN Dodumentation,但没有提到关于IN运算符。

提前致谢。

1 个答案:

答案 0 :(得分:3)

来自文档:

  

“语句不得包含子查询,外连接或自连接。”

IN通常映射到半连接。 Damien_The_Unbeliever指出:

  

IN()被定义为子查询或表达式序列 - OPs问题中的一个是子查询。

因此可能不支持。

你能否将IN表达为内部联接?如果IN查询为每个外行最多生成一行,则这将保留语义。如果有更多,那么行将被复制。但这对通知无关紧要。它应该在完全相同的情况下发射。