我在嘗試從表中獲取所有記錄時收到 SqlException 0x80131904。錯誤訊息是:無效的物件名稱“SiteToSites”
我在 Stack Overflow 上查看了這個錯誤,發現了很多關于它的帖子和答案。我已經檢查了答案,但沒有一個能解決我所看到的問題。
資料庫中有一個名為 SiteToSite 的表。我在 .NET 6 ASP.NET MVC 應用程式中使用 EF Core 6。
在服務類中,我有以下內容可以從名為 SiteToSite 的表中獲取所有記錄:
public IEnumerable<SiteToSite> GetAll()
{
return _context.SiteToSites.OrderBy(s => s.SiteToSiteID);
}
在控制器中,我有以下命令來呼叫 GetAll():
public IActionResult Step1()
{
IList<SiteToSite> sites;
sites = siteToSiteService.GetAll().ToList();
var firstSite = sites.First() ?? new SiteToSite();
return View(firstSite);
}
Step1 操作方法中的第四行是引發錯誤的地方。
在 DbContext 類中,SiteToSite 的 DbSet 是如何定義的:
public virtual DbSet<SiteToSite> SiteToSites { get; set; } = null!;
我看不出有什么問題。DbContext 類中有一個SiteToSites定義。該表存在。模型類中的屬性與 SQL 資料庫中的列相匹配。此外,對于不同的表和模型類,我有相同的邏輯,在其服務類和控制器中有自己的 GetAll() 方法。那么,為什么這個類會出現 0x80131904 錯誤,而其他類卻沒有呢?
我正在使用 VS 2022 和 EFCore 6
uj5u.com熱心網友回復:
只需在您的 DbContext 類中添加以下代碼:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<SiteToSite>()
.ToTable("SiteToSite");
}
我對其進行了測驗,它在我的代碼中運行良好。
如果無法識別,您可以嘗試安裝Microsoft.EntityFrameworkCore.Relational.
還有另一種最簡單的方法:SitetoSite在 DbContext 類中定義它。
public virtual DbSet<SiteToSite> SiteToSite { get; set; } = null!;
并在GetAll():
public IEnumerable<SiteToSite> GetAll()
{
return _context.SiteToSite.OrderBy(s => s.SiteToSiteID);
}
uj5u.com熱心網友回復:
EF Core 正在尋找一個SiteToSites表,但我認為正確的名稱是SiteToSite.
嘗試顯式配置表 SiteToSite 的名稱。
modelBuilder.Entity<SiteToSite>().ToTable("SiteToSite");
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/525128.html
上一篇:PythonVS代碼除錯器在嵌入式Python中失敗
下一篇:第一次點擊時旋轉到不同的角度
