Bagikan melalui


EntityFrameworkServiceCollectionExtensions.AddDbContextFactory Metode

Definisi

Overload

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

AddDbContextFactory<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext and 'Factory :> Microsoft.EntityFrameworkCore.IDbContextFactory<'Context>)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext, TFactory As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

Jenis parameter

TContext

Jenis yang DbContext akan dibuat oleh pabrik.

TFactory

Jenis IDbContextFactory<TContext> untuk mendaftar.

Parameter

serviceCollection
IServiceCollection

untuk IServiceCollection menambahkan layanan.

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

Tindakan opsional untuk mengonfigurasi DbContextOptions untuk konteks. Ini memberikan alternatif untuk melakukan konfigurasi konteks dengan mengesampingkan OnConfiguring(DbContextOptionsBuilder) metode dalam konteks turunan Anda.

Jika tindakan disediakan di sini, OnConfiguring(DbContextOptionsBuilder) metode akan tetap dijalankan jika telah ditimpa pada konteks turunan. OnConfiguring(DbContextOptionsBuilder) konfigurasi akan diterapkan selain konfigurasi yang dilakukan di sini.

Agar opsi diteruskan ke dalam konteks Anda, Anda perlu mengekspos konstruktor pada konteks Anda yang mengambil DbContextOptions<TContext> dan meneruskannya ke konstruktor DbContextdasar .

lifetime
ServiceLifetime

Masa pakai untuk mendaftarkan pabrik dan opsi. Defaultnya adalah Singleton

Mengembalikan

Koleksi layanan yang sama sehingga beberapa panggilan dapat dirangkai.

Keterangan

Mendaftarkan pabrik alih-alih mendaftarkan jenis konteks secara langsung memungkinkan pembuatan instans baru DbContext yang mudah. Mendaftarkan pabrik direkomendasikan untuk aplikasi Blazor dan situasi lain di mana cakupan injeksi dependensi tidak selaras dengan masa pakai konteks.

Gunakan metode ini saat menggunakan injeksi dependensi di aplikasi Anda, seperti dengan Blazor. Untuk aplikasi yang tidak menggunakan injeksi dependensi, pertimbangkan untuk membuat DbContext instans secara langsung dengan konstruktornya. Metode OnConfiguring(DbContextOptionsBuilder) ini kemudian dapat ditimpa untuk mengonfigurasi string koneksi dan opsi lainnya.

Untuk kenyamanan, metode ini juga mendaftarkan jenis konteks itu sendiri sebagai layanan terlingkup. Ini memungkinkan instans konteks diselesaikan dari cakupan injeksi dependensi secara langsung atau dibuat oleh pabrik, sebagaimana mewajarkan.

Kelebihan beban ini memungkinkan implementasi IDbContextFactory<TContext> tertentu untuk didaftarkan alih-alih menggunakan pabrik default yang dikirim dengan EF Core.

Kelebihan beban ini memiliki optionsAction yang menyediakan aplikasi IServiceProvider. Ini berguna jika Anda ingin mengatur Entity Framework Core untuk menyelesaikan layanan internalnya dari penyedia layanan aplikasi utama. Secara default, sebaiknya gunakan AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime) yang memungkinkan Kerangka Kerja Entitas untuk membuat dan memeliharanya sendiri IServiceProvider untuk layanan Kerangka Kerja Entitas internal.

Entity Framework Core tidak mendukung beberapa operasi paralel yang dijalankan pada instans DbContext yang sama. Ini termasuk eksekusi paralel kueri asinkron dan penggunaan bersamaan eksplisit dari beberapa utas. Oleh karena itu, selalu tunggu panggilan asinkron segera, atau gunakan instans DbContext terpisah untuk operasi yang dijalankan secara paralel. Lihat Menghindari masalah utas DbContext untuk informasi dan contoh selengkapnya.

Lihat Menggunakan DbContext dengan injeksi dependensi dan Menggunakan pabrik DbContext untuk informasi dan contoh selengkapnya.

Berlaku untuk

AddDbContextFactory<TContext,TFactory>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext,TFactory> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext where TFactory : Microsoft.EntityFrameworkCore.IDbContextFactory<TContext>;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext and 'Factory :> Microsoft.EntityFrameworkCore.IDbContextFactory<'Context>)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext, TFactory As DbContext) (serviceCollection As IServiceCollection, Optional optionsAction As Action(Of DbContextOptionsBuilder) = Nothing, Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

Jenis parameter

TContext

Jenis yang DbContext akan dibuat oleh pabrik.

TFactory

Jenis IDbContextFactory<TContext> untuk mendaftar.

Parameter

serviceCollection
IServiceCollection

untuk IServiceCollection menambahkan layanan.

optionsAction
Action<DbContextOptionsBuilder>

Tindakan opsional untuk mengonfigurasi DbContextOptions untuk konteks. Ini memberikan alternatif untuk melakukan konfigurasi konteks dengan mengesampingkan OnConfiguring(DbContextOptionsBuilder) metode dalam konteks turunan Anda.

Jika tindakan disediakan di sini, OnConfiguring(DbContextOptionsBuilder) metode akan tetap dijalankan jika telah ditimpa pada konteks turunan. OnConfiguring(DbContextOptionsBuilder) konfigurasi akan diterapkan selain konfigurasi yang dilakukan di sini.

Agar opsi diteruskan ke dalam konteks Anda, Anda perlu mengekspos konstruktor pada konteks Anda yang mengambil DbContextOptions<TContext> dan meneruskannya ke konstruktor DbContextdasar .

lifetime
ServiceLifetime

Masa pakai untuk mendaftarkan pabrik dan opsi. Defaultnya adalah Singleton

Mengembalikan

Koleksi layanan yang sama sehingga beberapa panggilan dapat dirangkai.

Keterangan

Mendaftarkan pabrik alih-alih mendaftarkan jenis konteks secara langsung memungkinkan pembuatan instans baru DbContext yang mudah. Mendaftarkan pabrik direkomendasikan untuk aplikasi Blazor dan situasi lain di mana cakupan injeksi dependensi tidak selaras dengan masa pakai konteks.

Gunakan metode ini saat menggunakan injeksi dependensi di aplikasi Anda, seperti dengan Blazor. Untuk aplikasi yang tidak menggunakan injeksi dependensi, pertimbangkan untuk membuat DbContext instans secara langsung dengan konstruktornya. Metode OnConfiguring(DbContextOptionsBuilder) ini kemudian dapat ditimpa untuk mengonfigurasi string koneksi dan opsi lainnya.

Untuk kenyamanan, metode ini juga mendaftarkan jenis konteks itu sendiri sebagai layanan terlingkup. Ini memungkinkan instans konteks diselesaikan dari cakupan injeksi dependensi secara langsung atau dibuat oleh pabrik, sebagaimana mewajarkan.

Kelebihan beban ini memungkinkan implementasi IDbContextFactory<TContext> tertentu untuk didaftarkan alih-alih menggunakan pabrik default yang dikirim dengan EF Core.

Entity Framework Core tidak mendukung beberapa operasi paralel yang dijalankan pada instans DbContext yang sama. Ini termasuk eksekusi paralel kueri asinkron dan penggunaan bersamaan eksplisit dari beberapa utas. Oleh karena itu, selalu tunggu panggilan asinkron segera, atau gunakan instans DbContext terpisah untuk operasi yang dijalankan secara paralel. Lihat Menghindari masalah utas DbContext untuk informasi dan contoh selengkapnya.

Lihat Menggunakan DbContext dengan injeksi dependensi dan Menggunakan pabrik DbContext untuk informasi dan contoh selengkapnya.

Berlaku untuk

AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext;
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder>? optionsAction = default, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext) (serviceCollection As IServiceCollection, Optional optionsAction As Action(Of DbContextOptionsBuilder) = Nothing, Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

Jenis parameter

TContext

Jenis yang DbContext akan dibuat oleh pabrik.

Parameter

serviceCollection
IServiceCollection

untuk IServiceCollection menambahkan layanan.

optionsAction
Action<DbContextOptionsBuilder>

Tindakan opsional untuk mengonfigurasi DbContextOptions untuk konteks. Ini memberikan alternatif untuk melakukan konfigurasi konteks dengan mengesampingkan OnConfiguring(DbContextOptionsBuilder) metode dalam konteks turunan Anda.

Jika tindakan disediakan di sini, OnConfiguring(DbContextOptionsBuilder) metode akan tetap dijalankan jika telah ditimpa pada konteks turunan. OnConfiguring(DbContextOptionsBuilder) konfigurasi akan diterapkan selain konfigurasi yang dilakukan di sini.

Agar opsi diteruskan ke dalam konteks Anda, Anda perlu mengekspos konstruktor pada konteks Anda yang mengambil DbContextOptions<TContext> dan meneruskannya ke konstruktor DbContextdasar .

lifetime
ServiceLifetime

Masa pakai untuk mendaftarkan pabrik dan opsi. Defaultnya adalah Singleton

Mengembalikan

Koleksi layanan yang sama sehingga beberapa panggilan dapat dirangkai.

Keterangan

Mendaftarkan pabrik alih-alih mendaftarkan jenis konteks secara langsung memungkinkan pembuatan instans baru DbContext yang mudah. Mendaftarkan pabrik direkomendasikan untuk aplikasi Blazor dan situasi lain di mana cakupan injeksi dependensi tidak selaras dengan masa pakai konteks.

Gunakan metode ini saat menggunakan injeksi dependensi di aplikasi Anda, seperti dengan Blazor. Untuk aplikasi yang tidak menggunakan injeksi dependensi, pertimbangkan untuk membuat DbContext instans secara langsung dengan konstruktornya. Metode OnConfiguring(DbContextOptionsBuilder) ini kemudian dapat ditimpa untuk mengonfigurasi string koneksi dan opsi lainnya.

Untuk kenyamanan, metode ini juga mendaftarkan jenis konteks itu sendiri sebagai layanan terlingkup. Ini memungkinkan instans konteks diselesaikan dari cakupan injeksi dependensi secara langsung atau dibuat oleh pabrik, sebagaimana mewajarkan.

Entity Framework Core tidak mendukung beberapa operasi paralel yang dijalankan pada instans DbContext yang sama. Ini termasuk eksekusi paralel kueri asinkron dan penggunaan bersamaan eksplisit dari beberapa utas. Oleh karena itu, selalu tunggu panggilan asinkron segera, atau gunakan instans DbContext terpisah untuk operasi yang dijalankan secara paralel. Lihat Menghindari masalah utas DbContext untuk informasi dan contoh selengkapnya.

Lihat Menggunakan DbContext dengan injeksi dependensi dan Menggunakan pabrik DbContext untuk informasi dan contoh selengkapnya.

Berlaku untuk

AddDbContextFactory<TContext>(IServiceCollection, Action<IServiceProvider,DbContextOptionsBuilder>, ServiceLifetime)

IDbContextFactory<TContext> Mendaftarkan di IServiceCollection untuk membuat instans jenis yang diberikanDbContext.

public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddDbContextFactory<TContext> (this Microsoft.Extensions.DependencyInjection.IServiceCollection serviceCollection, Action<IServiceProvider,Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> optionsAction, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) where TContext : Microsoft.EntityFrameworkCore.DbContext;
static member AddDbContextFactory : Microsoft.Extensions.DependencyInjection.IServiceCollection * Action<IServiceProvider, Microsoft.EntityFrameworkCore.DbContextOptionsBuilder> * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IServiceCollection (requires 'Context :> Microsoft.EntityFrameworkCore.DbContext)
<Extension()>
Public Function AddDbContextFactory(Of TContext As DbContext) (serviceCollection As IServiceCollection, optionsAction As Action(Of IServiceProvider, DbContextOptionsBuilder), Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Singleton) As IServiceCollection

Jenis parameter

TContext

Jenis yang DbContext akan dibuat oleh pabrik.

Parameter

serviceCollection
IServiceCollection

untuk IServiceCollection menambahkan layanan.

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

Tindakan opsional untuk mengonfigurasi DbContextOptions untuk konteks. Ini memberikan alternatif untuk melakukan konfigurasi konteks dengan mengesampingkan OnConfiguring(DbContextOptionsBuilder) metode dalam konteks turunan Anda.

Jika tindakan disediakan di sini, OnConfiguring(DbContextOptionsBuilder) metode akan tetap dijalankan jika telah ditimpa pada konteks turunan. OnConfiguring(DbContextOptionsBuilder) konfigurasi akan diterapkan selain konfigurasi yang dilakukan di sini.

Agar opsi diteruskan ke dalam konteks Anda, Anda perlu mengekspos konstruktor pada konteks Anda yang mengambil DbContextOptions<TContext> dan meneruskannya ke konstruktor DbContextdasar .

lifetime
ServiceLifetime

Masa pakai untuk mendaftarkan pabrik dan opsi. Defaultnya adalah Singleton

Mengembalikan

Koleksi layanan yang sama sehingga beberapa panggilan dapat dirangkai.

Keterangan

Mendaftarkan pabrik alih-alih mendaftarkan jenis konteks secara langsung memungkinkan pembuatan instans baru DbContext yang mudah. Mendaftarkan pabrik direkomendasikan untuk aplikasi Blazor dan situasi lain di mana cakupan injeksi dependensi tidak selaras dengan masa pakai konteks.

Gunakan metode ini saat menggunakan injeksi dependensi di aplikasi Anda, seperti dengan Blazor. Untuk aplikasi yang tidak menggunakan injeksi dependensi, pertimbangkan untuk membuat DbContext instans secara langsung dengan konstruktornya. Metode OnConfiguring(DbContextOptionsBuilder) ini kemudian dapat ditimpa untuk mengonfigurasi string koneksi dan opsi lainnya.

Untuk kenyamanan, metode ini juga mendaftarkan jenis konteks itu sendiri sebagai layanan terlingkup. Ini memungkinkan instans konteks diselesaikan dari cakupan injeksi dependensi secara langsung atau dibuat oleh pabrik, sebagaimana mewajarkan.

Kelebihan beban ini memiliki optionsAction yang menyediakan aplikasi IServiceProvider. Ini berguna jika Anda ingin mengatur Entity Framework Core untuk menyelesaikan layanan internalnya dari penyedia layanan aplikasi utama. Secara default, sebaiknya gunakan AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime) yang memungkinkan Kerangka Kerja Entitas untuk membuat dan memeliharanya sendiri IServiceProvider untuk layanan Kerangka Kerja Entitas internal.

Entity Framework Core tidak mendukung beberapa operasi paralel yang dijalankan pada instans DbContext yang sama. Ini termasuk eksekusi paralel kueri asinkron dan penggunaan bersamaan eksplisit dari beberapa utas. Oleh karena itu, selalu tunggu panggilan asinkron segera, atau gunakan instans DbContext terpisah untuk operasi yang dijalankan secara paralel. Lihat Menghindari masalah utas DbContext untuk informasi dan contoh selengkapnya.

Lihat Menggunakan DbContext dengan injeksi dependensi dan Menggunakan pabrik DbContext untuk informasi dan contoh selengkapnya.

Berlaku untuk