2013-08-21 79 views
1

繼體育商店教程Pro Asp.Net MVC book, 我的Asp.Net MVC4解決方案中有兩個項目。一個SportsStore.WebUI和一個SportsStore.Domain,它具有以下支持「EFDbContext」上下文的模型已更改錯誤

我的產品類我在我的模型類增加了一個必選屬性Name

//Product.cs class 
    [Required] 
    public string Name { get; set; } 
    //..more properties, not important as I get the same error for all - 
    because I added Required to all 

當我運行該項目,我得到The model backing the 'EFDbContext' context has changed since the database was created.錯誤。

我已經檢查了計算器和MSDN

解決方案1:沒有工作

MSDN上建議的解決方案是運行Update-Database -Force。這不起作用,我得到

「無法加載程序集'SportsStore.WebUI'(如果您在Visual Studio中使用代碼優先遷移,如果解決方案的startUp項目未引用項目包含您的遷移。您可以更改解決方案的startUp項目或使用-StartUpProjectName參數。)「

這很奇怪,因爲A-我不是先使用代碼,而是B域項目DOES參考WebUI中項目

方案二:沒有工作

然後我在PM控制檯嘗試Enable-Migrations,我得到

No context type was found in the assembly 'SportsStore.WebUI'. 

然後我試圖改變啓動項目SportsStore.Domain(其中有我的產品類) - 什麼都沒有,同樣的錯誤

+0

我不明白。您正在編輯Product.cs,但您沒有使用Code-First? – Pluc

+0

不,我沒有先使用代碼,根本沒有edmx。只是Web.COnfig中的連接字符串,手動編寫的DBContext類和上述產品類:( –

+1

本書中的代碼首先引用IS代碼,但它通過首先創建表來隱藏它;當代碼首先轉到創建表,它們已經存在,但這與錯誤無關 – Claies

回答

1

這問題實際上是由於您沒有更改腳手架調用的目標而發生的。在包管理器控制檯中,當您運行任何以您的域對象爲目標的命令時,需要將默認項目下拉菜單設置爲您的域項目。如果您嘗試針對您的Web項目運行遷移或數據庫更新,則它們將失敗。

編輯

重要的是這一行的錯誤

如果您正在使用的Code First遷移在Visual Studio中,如果您的解決方案的啓動項目未引用的項目這可能發生,包含您的遷移。

錯誤提示"Could not load assembly 'SportsStore.WebUI'這意味着這是項目的遷移被放入,即使他們應該已經進入您的域名項目。

+0

謝謝。這很簡單,只需從 落下。但是當你不知道去哪裏看時,一切都是看不見的。 :) –

+0

如果您在軟件包管理器控制檯中看不到Default Project下拉列表,請稍微擴大分離器直到它進入視野。 (它不是部分可見的,沒有任何暗示,除非你這樣做:只有當完全伸展時纔可見,我只是在半小時內試圖弄清楚這種煩惱)。 – Dean

1

我也有這個錯誤。我有一個現有的使用EF 5.0的asp.net mvc工作正常。

然後我用EF 5.0創建了一個控制檯應用程序,它指向同一個數據庫。 asp.net mvc應用程序開始拋出模型支持異常。

我注意到有一個名爲「_ MigrationHistory」的新表。爲了讓asp.net應用程序再次工作,我將此表重命名爲「 _MigrationHistory_backup」

相關問題