首頁  >  文章  >  資料庫  >  為什麼實體框架在 MySQL 中建立單一資料表,即使我的模型是複數?

為什麼實體框架在 MySQL 中建立單一資料表,即使我的模型是複數?

DDD
DDD原創
2024-10-31 08:03:30295瀏覽

Why Does Entity Framework Create Singular Tables in MySQL Even When My Model is Plural?

實體框架中的複數表名稱衝突

在MySQL 中使用實體框架並嘗試建立具有複數名稱的表時會出現此問題來自單一模型。

問題:

在提供的程式碼中,檢視需要一個名為「votes」的表,但實體框架建立了一個名為「 MySQL 中的投票」。此差異會導致異常「表'mydb.vote'不存在。」

解決方案:

要解決此問題,可以執行以下步驟: take:

  1. 移除OnModelCreating中的基礎建構函式呼叫:
    原本,OnModelCreating中使用基礎建構函式呼叫來實現複數化。但是,建議刪除此呼叫以防止複數行為。
  2. 刪除 PluralizingTableNameConvention:
    程式碼最初包含一行用於刪除 PluralizingTableNameConvention。這仍然是必要的,以防止表名自動複數。
  3. 刪除現有資料庫:
    建議刪除現有資料庫,然後允許實體框架建立新資料庫一。這可確保使用正確的表名。
  4. 確保資料庫建立權限:
    驗證連接字串中指定的 MySQL 使用者是否有足夠的權限來建立新資料庫。
  5. 從 ApplicationStart 中刪除複數:
    程式碼最初使用 DropCreateDatabaseAlways,這停用了複數。但是,這被錯誤地實作為 Database.SetInitializer(new DropCreateDatabaseAlways())。相反,它應該是 Database.SetInitializer(new myDBInitializer())。

實現這些變更後,實體框架應該在 MySQL 中正確建立「votes」表,解決表名衝突並允許查看正常運作。

以上是為什麼實體框架在 MySQL 中建立單一資料表,即使我的模型是複數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn