Visual Studio 2012 中數據庫優先實體框架模型的 MVC4 腳手架
我在使用 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; }我已經嘗試了很多其他的東西。
- 將數據模型直接放在 Web 應用程序中
- 將模型類更改為數據庫中的各種其他表,以防 Mno 類出現問題
- 將數據模型簡化為一個簡單的表
- 使用 Entity Framework Power Tools Beta 2 對 Code First 模型進行逆向工程。這產生了一組新的錯誤。我明白為什麼它是一個測試版。
- 將 ADO.NET 數據模型程式碼生成策略從 None 更改為 Default 以創建基於 ObjectContext 而不是 DbContext 的數據模型
- 關閉複數,所以屬性名稱是 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 完成?
訣竅是首先編譯您的解決方案,然後手動鍵入上下文類。不要從下拉列表中選擇它,只需自己輸入類名,它就會神奇地工作;-)
我不認為我們可以使用 Entity Framework 5 從 edmx 文件建構腳手架。
我嘗試了一系列類似的事情,但仍然遇到錯誤。
有一些建議可能只是刪除壞的 edmx 並重新開始可以生成正確的 .tt 文件以使腳手架正常工作,但我還沒有看到這一點。
我將嘗試更多以使其正常工作,因為我更喜歡 DB 優先方法。如果我得到任何進一步的資訊,我會更新這個答案。