加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2008 – 用于SQL Server 2008全文索引’包含’关键字

发布时间:2021-03-05 19:05:27 所属栏目:MsSql教程 来源:网络整理
导读:我认为在实现LinqToHql生成器类时我缺少一些基本的东西. 我已使用此注册使用自定义方言成功注册了SQL Server 2008包含的查询: RegisterFunction("contains",new StandardSQLFunction("contains",null)); 我只有一个类要查询全文索引: public class SearchNa

这是修订版:

public static class DialectExtensions
    {
        public static bool FullTextContains(this string source,string pattern)
        {
            return false;
        }
    }

    public class MyLinqtoHqlGeneratorsRegistry : DefaultLinqToHqlGeneratorsRegistry
    {
        public MyLinqtoHqlGeneratorsRegistry()
            : base()
        {
            RegisterGenerator(ReflectionHelper.GetMethod(() => DialectExtensions.FullTextContains(null,new FullTextContainsGenerator());
        }
    }

    public class FullTextContainsGenerator : BaseHqlGeneratorForMethod
    {
        public FullTextContainsGenerator()
        {
            SupportedMethods = new[] { ReflectionHelper.GetMethod(() => DialectExtensions.FullTextContains(null,null)) };
        }

        public override HqlTreeNode BuildHql(MethodInfo method,IHqlExpressionVisitor visitor)
        {
            HqlExpression[] args = new HqlExpression[2] { 
                visitor.Visit(arguments[0]).AsExpression(),visitor.Visit(arguments[1]).AsExpression() 
            };
            return treeBuilder.BooleanMethodCall("contains",args);
        }
    }

要使用修订版,语法略有不同:

var namesLinq = Session.Query<SearchName>().Where(x => x.Name.FullTextContains("john")).ToList();

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读