Przy użyciu osobnych projektuUsing a Separate Project

Warto przechowywać migracji w innym zestawie niż jeden zawierający Twoje DbContext.You may want to store your migrations in a different assembly than the one containing your DbContext. Do uaktualnienia wersji do wersji, można użyć tej strategii do obsługi wielu zestawów migracji, na przykład, jeden dla rozwoju i drugiego.You can also use this strategy to maintain multiple sets of migrations, for example, one for development and another for release-to-release upgrades.

Aby to zrobić...To do this...

  1. Tworzenie nowej biblioteki klas.Create a new class library.

  2. Dodaj odwołanie do zestawu z typu DbContext.Add a reference to your DbContext assembly.

  3. Przenieś migracji i modelu migawki plików do biblioteki klas.Move the migrations and model snapshot files to the class library.

    • Jeśli nie dodano żadnych serwerów, dodaj je do projektu typu DbContext, a następnie go przenieść.If you haven't added any, add one to the DbContext project then move it.
  4. Skonfiguruj zestaw migracji:Configure the migrations assembly:

    options.UseSqlServer(
        connectionString,
        x => x.MigrationsAssembly("MyApp.Migrations"));
    
  5. Dodaj odwołanie do zestawu z migracji z zestawu uruchamiania.Add a reference to your migrations assembly from the startup assembly.

    • Jeśli spowoduje utworzenie zależności cyklicznej, należy zaktualizować ścieżki wyjściowej biblioteki klas:If this causes a circular dependency, update the output path of the class library:

      <PropertyGroup>
        <OutputPath>..\MyStarupProject\bin\$(Configuration)\</OutputPath>
      </PropertyGroup>
      

Jeśli tak, nie wszystkie poprawnie, należy dodać nowy migracji do projektu.If you did everything correctly, you should be able to add new migrations to the project.

Add-Migration NewMigration -Project MyApp.Migrations
dotnet ef migraitons add NewMigration --project MyApp.Migrations