データを照会できるようにクラスを作成しました。私はコントローラクラスのデータコンテキストでそれを行う場合、私が作成したクラスでそれを行う場合、それはnullエラーをスローします。これは、次のエラースロー: Microsoft.Extensions.DependencyInjection.Abstractions.dllをしかし、私のスタートアップコンフィギュレーションユーザーコード で処理されていなかった。c#asp.net core。別のクラスからdatacontextにアクセスするにはどうすればいいですか?
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
services.AddDbContext<Abstractor_DataContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ApplicationDatabase")));
//services.AddTransient(typeof(Abstractor_DataContext));
//Register your filter as a service (Note this filter need not be an attribute as such)
services.AddTransient<AppExceptionFilterAttribute>();
services.AddMvc();
}
私のクラスの機能が
using Microsoft.Extensions.DependencyInjection;
public static IList<ApplicationInfo> TestDb()
{
//var options = _serviceProvider.GetService<Abstractor_DataContext>();
using (var context = _serviceProvider.GetService<Abstractor_DataContext>())
{
return context.ApplicationInfo.ToList();
}
}
VARのDataContextにアクセスするにはコンテキストはnullです。私は何が欠けていますか?私はDIを学ぶのが遅いです。新しいDBベースのASP.netコアプロジェクトのofficial documentationあたりとして
DbContextを入力として使用していないため、DbContextオブジェクトを提供することはできません。 – skjoshi
この 'TestDb'メソッドはいつ使用していますか?このメソッドを呼び出した時点でデータコンテキストが登録されている場合は、それが機能するはずです。しかし、例では、データベース 'Seed'の間にこれを呼び出すと動作しません。 –
エフライム、私はそれを私のコントロールで呼んでいます。 [HTTPGET] [ルート( "GetTestDb")] 公共のIList <にApplicationInfo> GetTestDb(INT番号) {リターンDataAccessServices.TestDb(); // _ context.ApplicationInfo.ToList()。 } – inavnacorp