Использование отдельного проекта миграции
Может потребоваться сохранить миграции в проекте, отличном от того, который содержит вашу DbContext
. Эту стратегию можно также использовать для поддержки нескольких наборов миграций, например для разработки и другого для обновлений выпуска.
Совет
Вы можете скачать используемый в этой статье пример из репозитория GitHub.
Шаги
Создайте новую библиотеку классов.
Добавьте ссылку на проект DbContext.
Переместите файлы моментальных снимков миграции и модели в библиотеку классов.
Совет
Если у вас нет существующих миграций, создайте его в проекте, содержащем DbContext, а затем переместите его. Это важно, так как если проект миграции не содержит существующей миграции, команда Add-Migration не сможет найти DbContext.
Настройте сборку миграций:
services.AddDbContext<ApplicationDbContext>( options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"), x => x.MigrationsAssembly("WebApplication1.Migrations")));
Добавьте ссылку на проект миграции из запускаемого проекта.
<ItemGroup> <ProjectReference Include="..\WebApplication1.Migrations\WebApplication1.Migrations.csproj" /> </ItemGroup>
Если это приводит к циклической зависимости, можно обновить базовый выходной путь проекта миграции .
<PropertyGroup> <BaseOutputPath>..\WebApplication1\bin\</BaseOutputPath> </PropertyGroup>
Если все было правильно, вы сможете добавить новые миграции в проект.
dotnet ef migrations add NewMigration --project WebApplication1.Migrations