NHibernate LinqToHqlGenerator for Oracle 全文索引 'Containing' 关键字
NHibernate LinqToHqlGenerator for Oracle full text index 'Containing' keyword
我在 Nhibernate 中使用了两个不同的数据库,对于 Sql 服务器我解决了阅读 this post
它在 Sql 服务器上运行良好,而 Oracle 有不同的语法:
Contains("a", "b")>0
我不知道如何在这段代码中做到这一点
public override HqlTreeNode BuildHql(MethodInfo method,
System.Linq.Expressions.Expression targetObject,
ReadOnlyCollection<System.Linq.Expressions.Expression> arguments,
HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
HqlExpression[] args = new HqlExpression[2] {
visitor.Visit(arguments[0]).AsExpression(),
visitor.Visit(arguments[1]).AsExpression()
};
return treeBuilder.BooleanMethodCall("contains", args);
}
问题是我无法理解如何在表达式后添加 >0。
提前致谢
比我想象的还要简单,用builder这样解决了
public override HqlTreeNode BuildHql(MethodInfo method,
System.Linq.Expressions.Expression targetObject,
ReadOnlyCollection<System.Linq.Expressions.Expression> arguments,
HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { HqlExpression[] args = new HqlExpression[2] {
visitor.Visit(arguments[0]).AsExpression(),
visitor.Visit(arguments[1]).AsExpression() };
return treeBuilder.GreaterThan(treeBuilder.MethodCall("contains", args), treeBuilder.Constant(0)); }
我在 Nhibernate 中使用了两个不同的数据库,对于 Sql 服务器我解决了阅读 this post
它在 Sql 服务器上运行良好,而 Oracle 有不同的语法:
Contains("a", "b")>0
我不知道如何在这段代码中做到这一点
public override HqlTreeNode BuildHql(MethodInfo method,
System.Linq.Expressions.Expression targetObject,
ReadOnlyCollection<System.Linq.Expressions.Expression> arguments,
HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
HqlExpression[] args = new HqlExpression[2] {
visitor.Visit(arguments[0]).AsExpression(),
visitor.Visit(arguments[1]).AsExpression()
};
return treeBuilder.BooleanMethodCall("contains", args);
}
问题是我无法理解如何在表达式后添加 >0。
提前致谢
比我想象的还要简单,用builder这样解决了
public override HqlTreeNode BuildHql(MethodInfo method,
System.Linq.Expressions.Expression targetObject,
ReadOnlyCollection<System.Linq.Expressions.Expression> arguments,
HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { HqlExpression[] args = new HqlExpression[2] {
visitor.Visit(arguments[0]).AsExpression(),
visitor.Visit(arguments[1]).AsExpression() };
return treeBuilder.GreaterThan(treeBuilder.MethodCall("contains", args), treeBuilder.Constant(0)); }