[英]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.