Asp.net-Mvc

Visual Studio 2012 中數據庫優先實體框架模型的 MVC4 腳手架

  • July 22, 2014

我在使用 Visual Studio 2012 時遇到問題,嘗試添加帶有腳手架的 MVC4 控制器。理想情況下,我希望在與我的 Web 應用程序分開的程序集中使用 Add New Item - ADO.NET Entity Data Model(即不是 Code First)從數據庫生成一個實體框架模型(edmx 文件等)。但是,當我設置它並使用添加控制器,指定“具有讀/寫操作和視圖的 MVC 控制器,使用實體框架”並從我的 DatabaseModel 程序集中選擇模型類和數據上下文類時,會彈出以下警報消息。

“Ifl.Payforit4.DatabaseModel.Mno”不屬於指定的“Ifl.Payforit4.DatabaseModel.Payforit4Entities”類,並且無法修改“Ifl.Payforit4.DatabaseModel.Payforit4Entities”類以將“DbSet”屬性添加到它。(例如,“Ifl.Payforit4.DatabaseModel.Payforit4Entities”類可能在已編譯的程序集中。)

無法修改該類是有道理的,因為它在另一個程序集中,儘管在同一個解決方案中,並且通過 T4 自動生成,但查看 Payforit4Entities 的自動生成程式碼時,“DbSet”屬性已經很明顯了。

    public DbSet<Mno> Mnoes { get; set; }

我已經嘗試了很多其他的東西。

  1. 將數據模型直接放在 Web 應用程序中
  2. 將模型類更改為數據庫中的各種其他表,以防 Mno 類出現問題
  3. 將數據模型簡化為一個簡單的表
  4. 使用 Entity Framework Power Tools Beta 2 對 Code First 模型進行逆向工程。這產生了一組新的錯誤。我明白為什麼它是一個測試版。
  5. 將 ADO.NET 數據模型程式碼生成策略從 None 更改為 Default 以創建基於 ObjectContext 而不是 DbContext 的數據模型
  6. 關閉複數,所以屬性名稱是 Mno 而不是 Mnoes

他們都沒有工作。唯一有效的是手動編寫 Code First DbContext 派生類和 POCO。巧合的是,我發現的每個展示 MVC4 腳手架的範例都使用這種數據模型。有沒有什麼地方說 Code First 是唯一一種適用於 MVC4 腳手架的數據模型?有沒有人設法在 Visual Studio 2012 中建構數據庫優先 (.edmx) 數據模型?數據庫足夠複雜,我寧願堅持使用數據庫優先策略。

我可以看到 Code First 與 Database First 模型的腳手架必須存在一些差異。例如,前者的 POCO 屬性保存由 KeyAttribute 指示的鍵,而後者在 edmx 模型文件中保存該資訊。這是 Entity Framework Power Tools 中逆向工程功能的基本原理嗎?我們是否期望從 edmx 文件轉向逆向工程 Code First 模型以使用 MVC4 腳手架?如果是這樣,我們是否應該繼續使用動態數據項目,直到 Entity Framework Power Tools 完成?

訣竅是首先編譯您的解決方案,然後手動鍵入上下文類。不要從下拉列表中選擇它,只需自己輸入類名,它就會神奇地工作;-)

請參閱此處:ASP.NET MVC4 – 如何在 MVC 控制器中使用 Database First EF

我不認為我們可以使用 Entity Framework 5 從 edmx 文件建構腳手架。

我嘗試了一系列類似的事情,但仍然遇到錯誤。

有一些建議可能只是刪除壞的 edmx 並重新開始可以生成正確的 .tt 文件以使腳手架正常工作,但我還沒有看到這一點。

我將嘗試更多以使其正常工作,因為我更喜歡 DB 優先方法。如果我得到任何進一步的資訊,我會更新這個答案。

引用自:https://stackoverflow.com/questions/12575665