リポジトリMVC6でApplicationDbContextの依存関係を挿入する方法

asp.net-core-mvc asp.net-mvc entity-framework-core

質問

私はリポジトリパターンでAsp.Net MVC 6 beta4を使用しています。

私のStartup.csでは、私はこれをsometing持っている:

services.AddEntityFramework()
                .AddSqlServer()
                .AddDbContext<ApplicationDbContext>(options => 
                        options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

//Dependency Injection
services.AddTransient<IProductRepository, ProductRepository>();

私のコントローラでは、次のようにApplicationDbContextのインスタンスを取得できます。

[FromServices]
public ApplicationDbContext DbContext { get; set; }

しかし、上記の自己セグメントコードを使用して、リポジトリの実装でApplicationDbContextのインスタンスを取得することはできません。

MVC 5では、私は自分のリポジトリにServiceLocatorを使い、ApplicaionDbContextを取った:

var context = ServiceLocator.Current.GetInstance<ApplicationDbContext>()

どのようにAsp.NET MVC 6で私のリポジトリのApplicationDbContextのインスタンスを取得するには?

受け入れられた回答

おそらく、AddTransientではなくAddScopedを使用して、要求が終了したときにコンテキストが適切にクリーンアップされるようにすることです。

AddEntityFramework呼び出しだけでなく、実際にコンテキストを追加する必要もあります。

services.AddScoped<IProductRepository, ProductRepository>();
services.AddScoped<ApplicationDbContext, ApplicationDbContext>();


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ