次の SQL を生成できます。
[dbo].[CategoryMatch]([CategoryId], ???) = 1
次の HQL ジェネレーターを使用します。
treeBuilder.Equality(treeBuilder.MethodCall("[dbo].[CategoryMatch]", new[] {
visitor.Visit(arguments[0]).AsExpression(),
visitor.Visit(arguments[1]).AsExpression()
}), treeBuilder.Constant(1));
ただし、これは次のように機能しないことがわかりました。
[CategoryId] IN (SELECT [Id] FROM [dbo].GetCategories(???))
上記の HQL ジェネレーターを新しい SQL に適応させるにはどうすればよいですか? 助けていただければ幸いです。ありがとう
アップデート:
これまでのところ、次のことを思いつきました。
treeBuilder.In(
visitor.Visit(arguments[0]).AsExpression(),
treeBuilder.SelectFrom(
treeBuilder.From(
treeBuilder.Range(
treeBuilder.MethodCall("[dbo].[GetCategories]", new[] {
visitor.Visit(arguments[1]).AsExpression()
}).AsExpression(),
treeBuilder.Alias("c")
)
)
)
);
しかし、これはエラーを与えます:
指定された方法はサポートされていません。