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
4

1 に答える 1

12

-StartupProjectName パラメーターを使用してみましたか?

Enable-Migrations -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1

最後のパラメーターは、app.config/web.config からの設定を含め、そのプロジェクト内での実行をエミュレートすることを指定します。

編集: 移行の有効化に関して、表示されているエラーは、おそらく MigrationsConfiguration がデフォルトで内部として作成されているためです。次のいずれかを実行できます。

  • 公開する
  • DB 初期化子を DataAccess プロジェクトのどこかに設定します
  • project1 の app.config/web.config で設定します。タイプは internal ですが、実行時に解決され、引き続き機能します。

    <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>
    
于 2012-11-06T06:05:06.727 に答える