В каком проекте следует включить миграцию

У меня есть проект 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

Ответ 1

Вы пытались использовать параметр -StartupProjectName?

Enable-Migrations -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1

Последний параметр указывает на эмуляцию работы внутри этого проекта, включая любые настройки из app.config/web.config.

Изменить: как для включения миграции, ошибка, которую вы видите, вероятно, связана с тем, что MigrationsConfiguration создается по умолчанию как внутренняя. Вы можете:

  • Сделать общедоступным
  • Установите инициализатор базы данных где-нибудь в проекте DataAccess
  • Установите его в app.config/web.config для project1. Несмотря на то, что тип является внутренним, он будет разрешаться во время выполнения и все еще работать:

    <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>