Korzystanie z oddzielnego projektu migracji

Możesz przechowywać migracje w innym projekcie niż ten, który zawiera plik DbContext. Można również użyć tej strategii, aby zachować wiele zestawów migracji, na przykład jeden na potrzeby programowania, a drugi na potrzeby uaktualnień z wersji do wydania.

Napiwek

Przykład z tego artykułu można zobaczyć w witrynie GitHub.

Kroki

  1. Utwórz nową bibliotekę klas.

  2. Dodaj odwołanie do projektu DbContext.

  3. Przenieś migracje i pliki migawek modelu do biblioteki klas.

    Napiwek

    Jeśli nie masz żadnych istniejących migracji, wygeneruj ją w projekcie zawierającym obiekt DbContext, a następnie przenieś ją. Jest to ważne, ponieważ jeśli projekt migracji nie zawiera istniejącej migracji, polecenie Add-Migration nie będzie mogło odnaleźć elementu DbContext.

  4. Konfigurowanie zestawu migracji:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Dodaj odwołanie do projektu migracji z projektu startowego.

    <ItemGroup>
      <ProjectReference Include="..\WebApplication1.Migrations\WebApplication1.Migrations.csproj" />
    </ItemGroup>
    

    Jeśli spowoduje to zależność cykliczną, możesz zaktualizować podstawową ścieżkę wyjściową projektu migracji :

    <PropertyGroup>
      <BaseOutputPath>..\WebApplication1\bin\</BaseOutputPath>
    </PropertyGroup>
    

Jeśli wszystko zostało wykonane poprawnie, powinno być możliwe dodanie nowych migracji do projektu.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations