2012-11-06 84 views
10

我有一個WPF項目,與下面的結構:哪個項目我應該能遷移

project1(solution) 
|->Model(project) 
|->DataAccess(project) 
|->project1(project) 

PROJECT1是我編寫,並提供該exe給用戶的項目。

現在我想啓用自動遷移:Enable-Migrations –EnableAutomaticMigrations

PROJECT1是默認的項目。當我運行該命令時,顯然它將無法找到位於DataAccess項目中的數據庫上下文。我可以在DataAccess項目中啓用它。

但這是正確的嗎?我怎樣才能在project1項目中啓用它?


編輯:

我想我可以啓用DataAccess項目移植,並將它MyConfiguration引用回DataAccess項目?

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>()); 

但我得到這個錯誤:

Error 2 'DataAccess.Migrations.Configuration' is inaccessible due to its protection level 

回答

12

您是否嘗試過使用-StartupProjectName參數?

Enable-Migrations -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1

最後一個參數指定效仿該項目內運行,包括的app.config/web.config中的任何設置。

編輯:對於啓用遷移,您看到的錯誤可能是因爲MigrationsConfiguration默認情況下創建爲內部。您可以:

  • 設爲公開
  • 設置在數據訪問項目數據庫初始化某處
  • 將其設置爲PROJECT1在app.config/web.config中。即使類型是內部的,這將解決在運行時仍能正常工作:

    <entityFramework> 
        <contexts> 
        <context type="DataAccess.FooContext, DataAccess"> 
         <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[DataAccess.FooContext, DataAccess], [DataAccess.Migrations.Configuration, DataAccess]], EntityFramework, PublicKeyToken=b77a5c561934e089"> 
         </databaseInitializer> 
        </context> 
        </contexts> 
    </entityFramework> 
    
+0

這爲我工作,我有一個解決方案,並從這個我用'啓用的遷移-ProjectName ProjectNameGoesHere兩個項目 - StartupProjectName StartupProjectNameGoesHere -ContextTypeName ContextNameToAddMigrationsGoesHere'爲解決方案上的第二個項目啓用遷移。 – Dev

相關問題