Korzystanie z osobnego projektuUsing a Separate Project

Możesz chcieć przechowywać migracji w innym zestawie niż jeden zawierający swoje 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 do tworzenia aplikacji i inny.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. Utwórz nową bibliotekę klas.Create a new class library.

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

  3. Przenieś migracje i pliki migawki modelu do biblioteki klas.Move the migrations and model snapshot files to the class library.

    Porada

    Jeśli nie masz żadnych istniejących migracje, wygeneruje w do projektu zawierającego kontekstu DbContext, a następnie przenieś go.If you have no existing migrations, generate one in the project containing the DbContext then move it. Jest to ważne, ponieważ jeśli zestaw migracje nie zawiera istniejącego migracji, polecenia Add-migracji nie można odnaleźć kontekstu DbContext.This is important because if the migrations assembly does not contain an existing migration, the Add-Migration command will be unable to find the DbContext.

  4. Skonfiguruj zestaw migracji:Configure the migrations assembly:

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

    • Jeśli spowoduje to utworzenie zależności cyklicznej, zaktualizuj ścieżkę wyjściową biblioteki klas:If this causes a circular dependency, update the output path of the class library:

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

Jeśli tak, nie wszystko prawidłowo, należy dodać nowe 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 migrations add NewMigration --project MyApp.Migrations