我正在使用 asp.net core [net5.0] 開發一個 WebAPI
- 資料庫:PostgreSQL
- 提供者:EF Core
- 方法:代碼優先
在我用于Ltree層次結構的域物件中。在添加和更新遷移時,出現以下錯誤:Npgsql.PostgresException: type "ltree" does not exist.
我做了一些研究,發現如果我"create extension Ltree"在 PostgreSQL 資料庫上運行,這將為 Ltree 創建擴展。
在代碼優先的方法中,將在添加和更新遷移時創建資料庫,所以我不能去資料庫并為此創建擴展。
我的問題是:是否可以在遷移中創建擴展?
public class Department
{
public int Id { get; set; }
[Column(TypeName = "Ltree")]
public string Ltree { get; set; }
public string Name { get; set; }
}
uj5u.com熱心網友回復:
您可以通過在模型構建代碼(例如 OnModelCreating)中添加以下行讓 EF Core 為您創建擴展:
modelBuilder.HasPostgresExtension("ltree");
請注意,在 7.0 版中,提供程式將自動檢測是否需要擴展(通過檢查您的模型屬性),并將添加適當的 PostgreSQL 擴展,而無需您顯式執行此操作(請參閱https://github.com/npgsql /efcore.pg/issues/2137)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/426962.html
標籤:asp.net 核心 实体框架核心 代码优先 npgsql
