實體框架建立複數表,而視圖需要單一表
在提供的程式碼中,實體框架建立多個表,即使視圖需要一個表。出現這種差異的原因是實體框架所建立的表和視圖所引用的表的名稱不同。
實體框架所建立的表遵循實體名稱複數的約定。因此,在這種情況下,會產生一個名為「Votes」的表。但是,該視圖需要一個名為「Vote」的表。造成這種情況的主要原因是MySQL .net 連接器對EF 的支援。刪除複數並進行其他調整應該可以解決問題。
首先,「ApplicationStart」方法包含一個小錯誤:
// Database.SetInitializer(new DropCreateDatabaseAlways<myDB>()); Database.SetInitializer(new myDBInitializer());
此外,停用「OnModelCreating」的基本實作是必要:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // modelBuilder.Entity<Vote>().ToTable("Votes") modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); }
也有人建議MySQL .net 連接器會阻止EF 產生資料庫,因此需要事先建立一個空白資料庫。在目前場景中,此限制不適用於連接器版本 6.4.4。如果使用者俱有所需的權限,則最好建立資料庫。
這些調整應該可以解決實體框架所建立的複數表名稱與視圖期望的單數表名稱之間的差異。
以上是為什麼實體框架會建立複數表,而我的視圖需要單數表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!