1

次の 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")
            )
        )
    )
);

しかし、これはエラーを与えます:

指定された方法はサポートされていません。

4

1 に答える 1