Entity Framework 中使用SQL Server全文索引(Full Text Search)
2023-09-11 14:14:16 时间
GitHub:https://github.com/fissoft/Fissoft.EntityFramework.Fts
EntityFramework中原来使用全文索引有些麻烦,需要使用DbContext.Database.SqlQuery或Execute去直接执行SQL。那样不能靠编译来检查读法错误,重构也不方便。
不过EF6增加Interceptor,可以执行前置和后置操作。
Eg:
public class FtsInterceptor : IDbCommandInterceptor { #region interface impl public void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) { } public void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) { } public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { } public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { } public void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { } public void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { } #endregion }
与Filter或其它Aop框架差不多,这里提供了一共6个方法,分别是在ScalarExecute,NonQueryExecute,ReaderExecute 这三种查询 前置及后置操作
一般来说,使用全文索引是为了查询数据,所以ScalarExecute,ReaderExecute这两种查询的前置方法需要我们改写,具体改写的原理是,将DbCommand中的CommandText读取出来,然后处理成支持全文索引的格式。
细节请参考GitHub的代码:https://github.com/fissoft/Fissoft.EntityFramework.Fts
使用时按以下方法即可
1.通过Nuget引用,或下载GitHub上的代码编译
PM> Install-Package Fissoft.EntityFramework.Fts
2.然后在程序启动时执行以下读句添加拦截器
DbInterceptors.Init()
3.执行查询时可以使用以下几种方法
db.Tables.Where(c=>c.Fullname.Contains(FullTextSearchModelUtil.Contains("code")));
db.Tables.Where(c=>c.Fullname.FreeText(FullTextSearchModelUtil.Contains("code ef")));
db.Tables.Where(c=>"*".Contains(FullTextSearchModelUtil.ContainsAll("code ef")));
db.Tables.Where(c=>"*".Contains(FullTextSearchModelUtil.FreeTextAll("code ef")));
相关文章
- Windows Server 2003 IIS 配置网站出现问题及解决
- SQL Server最大连接数问题
- Sql Server之旅——终点站 nolock引发的三级事件的一些思考
- sql server案例总结
- sql server操作案例
- sql server简单查询
- C# 连接SQL Server数据库的几种方式--server+data source等方式
- SQL Server 2008 打SP1 补丁遇到的问题
- [Java]log4j写SQL Server数据库日志的统一写法
- SQL Server 监控统计阻塞脚本信息
- RockBrain USB Server外设虚拟化高可用解决方案(银企直联虚拟化解决方案)
- Windows Server 2012部署第一台域控
- 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装
- 深入Jetty源码之Server和Container
- SQL Server 2005数据库安装
- SQLServer · 特性分析 · SQL Server 2012的分析函数未必都理解透了(2)
- [Node.js] node-persist: localStorage on the server
- [SQL] sql server中如何查看执行效率不高的语句
- Sql Server中sql语句自动换行
- 纪念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步骤和工作原理介绍
- SpringBoot的端口配置server.port没办法设置成Linux的环境变量
- 统计分析SQL Server Profiler 跟踪的SQL
- Sql Server 常用函数
- Oracle与SQL Server数据类型对应关系
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(八)
- Sql Server 2008 R2 激活密钥
- Sql Server通过ip+端口远程链接方法
- sql的介绍——SQL Server数据库管理系统
- SQL Server 2014如何修改数据库名