0

首次對實體框架代碼第一次在Package Manager控制檯運行Enable-Migrations命令時,這應該是一個非常基本的問題有關參數使用。這裏是我的解決方案是如何分離出來:實體框架代碼優先:啓用的遷移錯誤

  • 我有一個名爲MyMvcApp.DomainEntities項目包含我的域實體POCO的類和接口的存儲庫。
  • 我有一個名爲MyMvcApp.DataModeling項目,該項目包含EF引用(的DbContext,庫實現)。
  • 最後,我有一個MyMvcApp.Web項目,它是MVC4項目,並且還包含web.config中的EF連接字符串(本地SQL Server數據庫)。

當我運行允許的遷移,我得到一個討厭的錯誤說:

未能加載程序集「MyMvcApp.DataModeling」。 (如果你使用Visual Studio中的Code First遷移,如果您的解決方案的啓動項目未引用包含您的遷移項目會發生這種情況,你可以更改啓動項目爲您的解決方案或使用-StartUpProjectName參數。)

我已經通過看似「默認項目名稱」(包管理器控制檯下拉)的每一個排列並添加-ProjectName無濟於事運行。 (我的解決方案的啓動項目是MVC項目FYI)。

鑑於我是如何分開我的項目,我怎麼得到Enable-Migrations命令工作?

+0

你有你配置項目解決方案的依賴?你的遷移是在你的數據建模項目中嗎? – SOfanatic

+0

是的,所有的類參考都在那裏,並且解決方案構建。尚未創建遷移,因爲我無法啓用遷移,但是,我期望它們位於MyMvcApp.DataModeling項目中。 – im1dermike

+0

您是否嘗試過「啓用遷移-StartUpProjectName MyMvcApp.Web」? –

回答

0

原來的問題是,你絕對需要與您的連接字符串的App.config文件的項目與的DbContext類,使遷移。在我的情況下,這是MyMvcApp.DataModeling項目。我想我可以在我的MVC項目的Web.config文件中使用連接字符串,在我的Enable-Migrations控制檯命令中添加一個-StartUpProjectName 'MyMvcApp.Web'參數,但這似乎不起作用。

對於它的價值,如果你只是想生成數據庫,而不是讓遷移,你不要在你的數據建模項目需要一個app.config。你可以只添加的代碼行下面的Global.asax文件並運行你的應用程序:

using (var context = new EntityContext()) 
{ 
    context.Database.Initialize(false); 
} 
+0

我認爲這裏有其他的東西,因爲我使用的是遷移,而我的'.Data'沒有任何連接字符串,連接字符串在'.Web'項目中,遷移工作得很好。 – SOfanatic

+0

你可以提供一個示例app.config文件嗎?嘗試啓用遷移,但始終失敗。從您的回覆中可以解決這個問題,但沒有示例文件,我不知道如何正確設置它 –

相關問題