簡體   English   中英

使用Entity Framework讀取SQL Server表時無效的對象名稱

[英]Invalid object name when using Entity Framework to read SQL Server table

我正在嘗試使用ASP.NET核心應用程序中的Entity Framework建立數據庫連接,但每次我嘗試從我的數據上下文中讀取時,它都會失敗,說明我想要獲取的表無效。

我對使用ASP.NET Core的EF相對較新,所以我可能會遺漏一些明顯的東西。 如何讓EF連接/找到我的對象?

我的連接字符串如下:

Data Source=DbServer;Initial Catalog=AIT;Integrated Security=True

我試圖讀取的表在DbServer

AIT.processing.orderProcessing

我在DB上下文嘗試連接時得到的錯誤是:

SqlException:無效的對象名稱'processing.orderProcessing'。

我在運行時查看了上下文本身,並且它正在連接到正確的服務器。 我還驗證了連接字符串中的數據庫是正確的,並且它包含processing.orderProcessing表。 我還嘗試通過使用我的c#類上的Table屬性明確告訴EF應該連接到特定對象:

[Table("AIT.processing.orderProcessing")]

這只會導致我的錯誤消息更改為:

SqlException:無效的對象名稱'AIT.processing.orderProcessing'。

據我所知,如果它連接到DBServer ,它應該能夠找到該表,因為它肯定存在,並且拼寫正確。 我只是從SSMS復制/粘貼它以確保。

編輯:以下答案是為我修復它的原因。 將我的Table屬性更改為:

[Table("orderProcessing", Schema = "processing")]

導致EF能夠連接。

所以AIT是數據庫名稱, processing是模式名稱, orderProcessing是表名稱。

嘗試使用數據注釋分別設置表名和方案名稱,如:

[Table("orderProcessing", Schema = "processing")]

或者在DbContext OnModelCreating使用:

 modelBuilder.Entity<MyEntity>().ToTable("orderProcessing", processing);

如果您的數據庫名稱為“AIT”且架構為“正在處理”,則必須將EF核心表示為您的架構名稱。

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.HasDefaultSchema("processing");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM