Ayrı Geçişler Projesi Kullanma

DbContext içeren projeden farklı bir projede geçişlerinizi depolamak isteyebilirsiniz. Projeniz WinUI, Xamarin, MAUI, Blazor veya Azure İşlevleri gibi platforma özgü bir proje türü kullanıyorsa veya belirli bir çalışma zamanı tanımlayıcısını (RID) hedefliyorsa bu önerilir. Bu stratejiyi, biri geliştirme ve diğeri yayından sürüme yükseltmeler gibi birden çok geçiş kümesini korumak için de kullanabilirsiniz.

Tip

Bu makalenin sample dosyasını GitHub üzerinde görüntüleyebilirsiniz.

Steps

  1. Yeni bir sınıf kitaplığı oluşturun.

  2. DbContext projenize bir referans ekleyin.

  3. Geçişleri ve modelin anlık görüntü dosyalarını sınıf kitaplığına taşıyın.

    Tip

    Mevcut geçişleriniz yoksa, DbContext'i içeren projede bir geçiş oluşturun ve taşıyın. Geçiş projesi mevcut bir geçiş içermiyorsa Add-Migration komutu DbContext'i bulamadığı için bu önemlidir.

  4. Geçişler derlemesini yapılandırın:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Başlangıç projesinden geçiş projenize bir başvuru ekleyin.

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

    Bu döngüsel bir bağımlılık oluşturursa, bunun yerine geçiş projesinin temel çıkış yolunu güncelleştirebilirsiniz:

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

Her şeyi doğru yaptıysanız projeye yeni geçişler ekleyebilmeniz gerekir.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations

Tip

Uygulamanız bağımlılık enjeksiyonu kullanıyorsa, geçişler projenizde IDesignTimeDbContextFactory<TContext>'yi uygulamayı düşünün. Bu, EF araçlarının başlangıç projenizi çalıştırmaya gerek kalmadan DbContext öğenizi oluşturmasına olanak tanır. Daha fazla bilgi için bkz. Tasarım zamanı fabrikasından.