Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nhibernate-表值函数_C#_Linq_Nhibernate_Linq To Nhibernate - Fatal编程技术网

C# Nhibernate-表值函数

C# Nhibernate-表值函数,c#,linq,nhibernate,linq-to-nhibernate,C#,Linq,Nhibernate,Linq To Nhibernate,我可以生成以下SQL: [dbo].[CategoryMatch]([CategoryId],?)=1 使用以下HQL生成器: treeBuilder.Equality(treeBuilder.MethodCall("[dbo].[CategoryMatch]", new[] { visitor.Visit(arguments[0]).AsExpression(), visitor.Visit(arguments[1]).AsExpression() }), treeBuilde

我可以生成以下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]位于(从[dbo]中选择[Id]。GetCategories(???))

如何使用新的SQL来调整上面的HQL生成器?我很感激你的帮助。谢谢

更新:

到目前为止,我已经得出以下结论:

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")
            )
        )
    )
);
treeBuilder.In(
    visitor.Visit(arguments[0]).AsExpression(),
    treeBuilder.MethodCall("SELECT [Id] FROM [dbo].[GetCategories]", new[] {
        visitor.Visit(arguments[1]).AsExpression()
    }).AsExpression()
)
但这就产生了错误:

不支持指定的方法


我已设法提出以下建议:

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")
            )
        )
    )
);
treeBuilder.In(
    visitor.Visit(arguments[0]).AsExpression(),
    treeBuilder.MethodCall("SELECT [Id] FROM [dbo].[GetCategories]", new[] {
        visitor.Visit(arguments[1]).AsExpression()
    }).AsExpression()
)
这是一个有点黑客,但它的工作,所以我想它会做的现在