【发布时间】:2017-08-16 20:09:37
【问题描述】:
在 EFCore 中使用全文搜索的最佳方式是什么
目前我有两种方法
方法#1
var entities = this.DbContext.Example
.FromSql("fullText_Proc {0}, {1}", searchTermParameter, topParameter);
return entities.AsNoTracking().ToList();
这里我不得不创建一个 proc,因为 FromSql 忽略了 WHERE 子句。
方法#1
创建命令并手动进行映射
using (var command = this.DbContext.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "SELECT ... WHERE CONTAINS("Name", @p1)";
command.CommandType = CommandType.Text;
var parameter = new SqlParameter("@p1",...);
this.DbContext.Database.OpenConnection();
using (var result = command.ExecuteReader())
{
while (result.Read())
{
.... // Map entity
}
}
}
【问题讨论】:
-
我使用了您的第二种方法来使用 CONTAINSTABLE 获取排名结果,目前使用 FromSql 无法实现。谢谢。
标签: c# .net-core entity-framework-core