ASP.NETコアでは、組み込みDIコンテナによってEFコアコンテキストが作成されます。 official documentationでは、コンテキストは、汎用DbContextOptions<TContext>
で作成された:ASP.NETコアとEFコアで汎用でないDbContextOptionsを安全に使用できますか?
public class MyContext : IdentityDbContext<User> {
public MyContext(DbContextOptions<MyContext> options, ILogger<MyContext) logger) : base(options) { }
}
しかしながら、非ジェネリックの例が同様に存在する。
public class MyContext : IdentityDbContext<User> {
public MyContext(DbContextOptions options, ILogger<MyContext) logger) : base(options) { }
}
それらの間の差は、ソースコードに従います:
タイプパラメータ:TContext:これらのオプションが適用されるコンテキストのタイプ。
デザインでは抽象的なコンテキストがあり、DIコンテナでうまく動作しないため、非ジェネリックタイプを使用したいと思います。
したがって、非ジェネリックタイプを使用すると、実際にはどういう意味ですか?私のコンテキストは正しく構成されないでしょうか?
public IdentityDbContext(DbContextOptions options)
私にはそれが問題なく非ジェネリックDbContextOptions
で作業できることを意味します。ここでは
私はおそらく、ジェネリックでないものを使うのは安全だと思いますが、あなたのプロジェクトには2つの異なるコンテキストがあります。次に、各コンテキストが正しく構成されるように、汎用オプションclassを使用する必要があります。 – grokky