Is there a better way to do a correlated exists sub query?
C# code
PredicateExpression existsSubqueryClause = new PredicateExpression();
existsSubqueryClause.Add(PredicateFactory.CompareValue(
SubTableFieldIndex.Field1, ComparisonOperator.Equal, "const string"));
existsSubqueryClause.AddWithAnd(
new FieldCompareExpressionPredicate(
EntityFieldFactory.Create(ParentTableFieldIndex.ID), null,
ComparisonOperator.Equal,
new Expression(EntityFieldFactory.Create(SubTableFieldIndex.ParentTableID))
)
);
FilterBucket.PredicateExpression.AddWithAnd(
new FieldCompareSetPredicate(
null, null,
EntityFieldFactory.Create(SubTableFieldIndex.ID), null,
SetOperator.Exist,
existsSubqueryClause,
true)
);
Resulting MS SQL CODE
SELECT [Schema].[ParentTable].[ID] FROM [Schema].[ParentTable]
WHERE (NOT EXISTS (SELECT [Schema].[SubTable].[ID] FROM [Schema].[SubTable] WHERE ([Schema].[ParentTable].[ID] = [Schema].[SubTable].[ParentTableID])))