我喜歡使用
DbFunctions' 不包含“TrigramsSimilarityDistance”的定義,并且沒有可訪問的擴展方法 TrigramsSimilarity Distance' 接受型別為 'DbFunctions 的第一個引數可以找到(您是否缺少 using 指令或程式集參考?)
我不確定如何匯入 pg db 擴展。我所做的是——
using static Microsoft.Extensions.DependencyInjection.NpgsqlServiceCollectionExtensions;
但它不起作用。
更新-
我使用的是ASP.Net Core 3.1,所以我使用了這兩個 nuget 包-
Npgsql.EntityFrameworkCore.PostgreSQL - v3.1.18
Npgsql.EntityFrameworkCore.PostgreSQL.Trigrams - v3.1.18
然后進行配置,我在Startup.cs檔案中完成了此操作-
services.AddDbContext<ApplicationDbContext>(options => {
options.UseNpgsql(Configuration.GetConnectionString("DevelopConnection"), option => option.UseTrigrams());
});
然后當我像上述方式那樣打電話時-
string searchValue = "similar text";
var resultList = await _context.Comments.OrderBy(c => EF.Functions.TrigramsSimilarityDistance(c.Name, searchValue))
.ThenBy(t => t.Name)
.ToListAsync();
并得到這樣的錯誤 -
Npgsql.PostgresException (0x80004005): 42883: operator does not exist: text <-> text
Exception data:
Severity: ERROR
SqlState: 42883
MessageText: operator does not exist: text <-> text
Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
Position: 473
File: d:\pginstaller_13.auto\postgres.windows-x64\src\backend\parser\parse_oper.c
Line: 731
Routine: op_error
任何人都可以幫我解決這個問題嗎?
uj5u.com熱心網友回復:
第一個問題是因為您需要匯入 nuget 包 Npgsql.EntityFrameworkCore.PostgreSQL。看來你已經解決了這個問題。
第二個問題是您的資料庫中缺少運算子 <-> (similarity_dist)。此錯誤是由資料庫而不是 Microsoft.EntityFrameworkCore 引發的。
您可以在本檔案中看到,正如Svyatoslav Danyliv在評論中指出的那樣,運算子“text <-> text”應該與 pg_trgm 一起安裝。
下面是如何安裝附加模塊 pg_trgm
uj5u.com熱心網友回復:
我已經解決了這個問題并寫了一篇完整的文章。完整的帖子可以在這里找到-
https://www.linkedin.com/posts/ajahin_sort-by-minimum-edit-distance-levenshtein-activity-6855206159448649729-dfN5/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/321685.html
標籤:C# PostgreSQL 实体框架 asp.net核心 实体框架核心
