EntityFrameworkServiceCollectionExtensions.AddDbContextFactory メソッド

定義

オーバーロード

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定されたDbContext型のインスタンスを作成します。

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定されたDbContext型のインスタンスを作成します。

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定されたDbContext型のインスタンスを作成します。

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定されたDbContext型のインスタンスを作成します。

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定されたDbContext型のインスタンスを作成します。

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

型パラメーター

TContext

ファクトリによって作成される の DbContext 型。

TFactory

登録する の IDbContextFactory<TContext> 型。

パラメーター

serviceCollection
IServiceCollection

サービスを追加する先の IServiceCollection

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

コンテキストの を DbContextOptions 構成するオプションのアクション。 これにより、派生コンテキストで メソッドをオーバーライドすることで、コンテキストの構成を実行する OnConfiguring(DbContextOptionsBuilder) 代わりに使用できます。

ここでアクションが指定されている場合、 OnConfiguring(DbContextOptionsBuilder) メソッドは派生コンテキストでオーバーライドされている場合でも実行されます。 OnConfiguring(DbContextOptionsBuilder) 構成は、ここで実行される構成に加えて適用されます。

オプションをコンテキストに渡すには、 を受け取って DbContextOptions<TContext> の基本コンストラクターに渡すコンストラクター DbContextをコンテキストで公開する必要があります。

lifetime
ServiceLifetime

ファクトリとオプションを登録する有効期間。 既定値は Singleton です

戻り値

複数の呼び出しをチェーンできるように、同じサービス コレクション。

注釈

コンテキスト型を直接登録する代わりにファクトリを登録すると、新しい DbContext インスタンスを簡単に作成できます。 Blazor アプリケーションや、依存関係の挿入スコープがコンテキストの有効期間と一致しないその他の状況では、ファクトリの登録をお勧めします。

Blazor など、アプリケーションで依存関係の挿入を使用する場合は、このメソッドを使用します。 依存関係の挿入を使用しないアプリケーションの場合は、コンストラクターを使用してインスタンスを DbContext 直接作成することを検討してください。 OnConfiguring(DbContextOptionsBuilder)その後、 メソッドをオーバーライドして、接続文字列やその他のオプションを構成できます。

便宜上、このメソッドはコンテキスト型自体もスコープ付きサービスとして登録します。 これにより、コンテキスト インスタンスを依存関係の挿入スコープから直接解決するか、必要に応じてファクトリによって作成できます。

このオーバーロードを使用すると、EF Core に付属する既定のファクトリを使用する代わりに、 の特定の実装 IDbContextFactory<TContext> を登録できます。

このオーバーロードには、 optionsAction アプリケーション IServiceProviderの を提供する があります。 これは、プライマリ アプリケーション サービス プロバイダーから内部サービスを解決するように Entity Framework Core を設定する場合に便利です。 既定では、 を使用 AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime) することをお勧めします。これにより、Entity Framework は内部 Entity Framework サービス用に独自 IServiceProvider のを作成および維持できます。

Entity Framework Core では、同じ DbContext インスタンス上での複数の並列操作の実行がサポートされていません。 これには、非同期クエリの並列実行と、複数のスレッドからの明示的な同時使用の両方が含まれます。 そのため、非同期呼び出しは常にすぐに待機するか、並列で実行される操作には個別の DbContext インスタンスを使用します。 詳細と例については、「 DbContext スレッドの問題を回避する 」を参照してください。

詳細と例については、「 依存関係の挿入での DbContext の使用」と 「DbContext ファクトリの使用 」を参照してください。

適用対象

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定されたDbContext型のインスタンスを作成します。

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

型パラメーター

TContext

ファクトリによって作成される の DbContext 型。

TFactory

登録する の IDbContextFactory<TContext> 型。

パラメーター

serviceCollection
IServiceCollection

サービスを追加する先の IServiceCollection

optionsAction
Action<DbContextOptionsBuilder>

コンテキストの を DbContextOptions 構成するオプションのアクション。 これにより、派生コンテキストで メソッドをオーバーライドすることで、コンテキストの構成を実行する OnConfiguring(DbContextOptionsBuilder) 代わりに使用できます。

ここでアクションが指定されている場合、 OnConfiguring(DbContextOptionsBuilder) メソッドは派生コンテキストでオーバーライドされている場合でも実行されます。 OnConfiguring(DbContextOptionsBuilder) 構成は、ここで実行される構成に加えて適用されます。

オプションをコンテキストに渡すには、 を受け取って DbContextOptions<TContext> の基本コンストラクターに渡すコンストラクター DbContextをコンテキストで公開する必要があります。

lifetime
ServiceLifetime

ファクトリとオプションを登録する有効期間。 既定値は Singleton です

戻り値

複数の呼び出しをチェーンできるように、同じサービス コレクション。

注釈

コンテキスト型を直接登録する代わりにファクトリを登録すると、新しい DbContext インスタンスを簡単に作成できます。 Blazor アプリケーションや、依存関係の挿入スコープがコンテキストの有効期間と一致しないその他の状況では、ファクトリの登録をお勧めします。

Blazor など、アプリケーションで依存関係の挿入を使用する場合は、このメソッドを使用します。 依存関係の挿入を使用しないアプリケーションの場合は、コンストラクターを使用してインスタンスを DbContext 直接作成することを検討してください。 OnConfiguring(DbContextOptionsBuilder)その後、 メソッドをオーバーライドして、接続文字列やその他のオプションを構成できます。

便宜上、このメソッドはコンテキスト型自体もスコープ付きサービスとして登録します。 これにより、コンテキスト インスタンスを依存関係の挿入スコープから直接解決するか、必要に応じてファクトリによって作成できます。

このオーバーロードを使用すると、EF Core に付属する既定のファクトリを使用する代わりに、 の特定の実装 IDbContextFactory<TContext> を登録できます。

Entity Framework Core では、同じ DbContext インスタンス上での複数の並列操作の実行がサポートされていません。 これには、非同期クエリの並列実行と、複数のスレッドからの明示的な同時使用の両方が含まれます。 そのため、非同期呼び出しは常にすぐに待機するか、並列で実行される操作には個別の DbContext インスタンスを使用します。 詳細と例については、「 DbContext スレッドの問題を回避する 」を参照してください。

詳細と例については、「 依存関係の挿入での DbContext の使用」と 「DbContext ファクトリの使用 」を参照してください。

適用対象

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定された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;
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

型パラメーター

TContext

ファクトリによって作成される の DbContext 型。

パラメーター

serviceCollection
IServiceCollection

サービスを追加する先の IServiceCollection

optionsAction
Action<DbContextOptionsBuilder>

コンテキストの を DbContextOptions 構成するオプションのアクション。 これにより、派生コンテキストで メソッドをオーバーライドすることで、コンテキストの構成を実行する OnConfiguring(DbContextOptionsBuilder) 代わりに使用できます。

ここでアクションが指定されている場合、 OnConfiguring(DbContextOptionsBuilder) メソッドは派生コンテキストでオーバーライドされている場合でも実行されます。 OnConfiguring(DbContextOptionsBuilder) 構成は、ここで実行される構成に加えて適用されます。

オプションをコンテキストに渡すには、 を受け取って DbContextOptions<TContext> の基本コンストラクターに渡すコンストラクター DbContextをコンテキストで公開する必要があります。

lifetime
ServiceLifetime

ファクトリとオプションを登録する有効期間。 既定値は Singleton です

戻り値

複数の呼び出しをチェーンできるように、同じサービス コレクション。

注釈

コンテキスト型を直接登録する代わりにファクトリを登録すると、新しい DbContext インスタンスを簡単に作成できます。 Blazor アプリケーションや、依存関係の挿入スコープがコンテキストの有効期間と一致しないその他の状況では、ファクトリの登録をお勧めします。

Blazor など、アプリケーションで依存関係の挿入を使用する場合は、このメソッドを使用します。 依存関係の挿入を使用しないアプリケーションの場合は、コンストラクターを使用してインスタンスを DbContext 直接作成することを検討してください。 OnConfiguring(DbContextOptionsBuilder)その後、 メソッドをオーバーライドして、接続文字列やその他のオプションを構成できます。

便宜上、このメソッドはコンテキスト型自体もスコープ付きサービスとして登録します。 これにより、コンテキスト インスタンスを依存関係の挿入スコープから直接解決するか、必要に応じてファクトリによって作成できます。

Entity Framework Core では、同じ DbContext インスタンス上での複数の並列操作の実行がサポートされていません。 これには、非同期クエリの並列実行と、複数のスレッドからの明示的な同時使用の両方が含まれます。 そのため、非同期呼び出しは常にすぐに待機するか、並列で実行される操作には個別の DbContext インスタンスを使用します。 詳細と例については、「 DbContext スレッドの問題を回避する 」を参照してください。

詳細と例については、「 依存関係の挿入での DbContext の使用」と 「DbContext ファクトリの使用 」を参照してください。

適用対象

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

に をIDbContextFactory<TContext>IServiceCollection登録して、指定されたDbContext型のインスタンスを作成します。

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

型パラメーター

TContext

ファクトリによって作成される の DbContext 型。

パラメーター

serviceCollection
IServiceCollection

サービスを追加する先の IServiceCollection

optionsAction
Action<IServiceProvider,DbContextOptionsBuilder>

コンテキストの を DbContextOptions 構成するオプションのアクション。 これにより、派生コンテキストで メソッドをオーバーライドすることで、コンテキストの構成を実行する OnConfiguring(DbContextOptionsBuilder) 代わりに使用できます。

ここでアクションが指定されている場合、 OnConfiguring(DbContextOptionsBuilder) メソッドは派生コンテキストでオーバーライドされている場合でも実行されます。 OnConfiguring(DbContextOptionsBuilder) 構成は、ここで実行される構成に加えて適用されます。

オプションをコンテキストに渡すには、 を受け取って DbContextOptions<TContext> の基本コンストラクターに渡すコンストラクター DbContextをコンテキストで公開する必要があります。

lifetime
ServiceLifetime

ファクトリとオプションを登録する有効期間。 既定値は Singleton です

戻り値

複数の呼び出しをチェーンできるように、同じサービス コレクション。

注釈

コンテキスト型を直接登録する代わりにファクトリを登録すると、新しい DbContext インスタンスを簡単に作成できます。 Blazor アプリケーションや、依存関係の挿入スコープがコンテキストの有効期間と一致しないその他の状況では、ファクトリの登録をお勧めします。

Blazor など、アプリケーションで依存関係の挿入を使用する場合は、このメソッドを使用します。 依存関係の挿入を使用しないアプリケーションの場合は、コンストラクターを使用してインスタンスを DbContext 直接作成することを検討してください。 OnConfiguring(DbContextOptionsBuilder)その後、 メソッドをオーバーライドして、接続文字列やその他のオプションを構成できます。

便宜上、このメソッドはコンテキスト型自体もスコープ付きサービスとして登録します。 これにより、コンテキスト インスタンスを依存関係の挿入スコープから直接解決するか、必要に応じてファクトリによって作成できます。

このオーバーロードには、 optionsAction アプリケーション IServiceProviderの を提供する があります。 これは、プライマリ アプリケーション サービス プロバイダーから内部サービスを解決するように Entity Framework Core を設定する場合に便利です。 既定では、 を使用 AddDbContextFactory<TContext>(IServiceCollection, Action<DbContextOptionsBuilder>, ServiceLifetime) することをお勧めします。これにより、Entity Framework は内部 Entity Framework サービス用に独自 IServiceProvider のを作成および維持できます。

Entity Framework Core では、同じ DbContext インスタンス上での複数の並列操作の実行がサポートされていません。 これには、非同期クエリの並列実行と、複数のスレッドからの明示的な同時使用の両方が含まれます。 そのため、非同期呼び出しは常にすぐに待機するか、並列で実行される操作には個別の DbContext インスタンスを使用します。 詳細と例については、「 DbContext スレッドの問題を回避する 」を参照してください。

詳細と例については、「 依存関係の挿入での DbContext の使用」と 「DbContext ファクトリの使用 」を参照してください。

適用対象