startup.csのConfigureServicesメソッドにDbContextインスタンスを正しく挿入する方法(ASP.netコア1.1)

asp.net-core c# dependency-injection entity-framework-core

質問

私はASP.NET Core Webアプリケーション用にEntityFrameworkFileProviderを実装しEntityFrameworkFileProviderViewDbContextインスタンスをASP.NET Core DIフレームワークによってViewDbContextに挿入します。

ViewDbContextdbContext

public class EntityFrameworkFileProvider : IFileProvider
{
    private ViewDbContext _context;

    public EntityFrameworkFileProvider(ViewDbContext context)
    { 
       /* should be injected by asp.net core DI */
        _context = context;
    }
    public IDirectoryContents GetDirectoryContents(string subpath)
    {
        .....
    }

    public IFileInfo GetFileInfo(string subpath)
    {
        var result = new DatabaseFileInfo(_context, subpath);
        return result.Exists ? result as IFileInfo : new NotFoundFileInfo(subpath);
    }

    public IChangeToken Watch(string filter)
    {
        return new DatabaseChangeToken(_context, filter);
    }
}

今、startup.csのEntityFrameworkFileProviderRazorViewEngineOptionを追加しますViewDbContextインスタンスを、DIフレームワークによってstartup.csのConfigureServicesメソッドに自動的に挿入する方法を教えてください。 EntityFrameworkFileProviderコンストラクターを正しく呼び出す方法は?

Startup.csで

public void ConfigureServices(IServiceCollection services)
{
      /* Add  EntityFrameworkFileProvider to Razor engine */
      services.Configure<RazorViewEngineOptions>(opts =>
      {
          opts.FileProviders.Add(new EntityFrameworkFileProvider(null?));
      });

      services.AddMvc();
}

受け入れられた回答

私は解決策を見つけたと思う!何か案が?

public void ConfigureServices(IServiceCollection services)
{
     services.AddDbContext<ViewDbContext>(options => 
       options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    ...
     /* Add  EntityFrameworkFileProvider to Razor engine */       
     var context = services.BuildServiceProvider()
                       .GetService<ViewDbContext>();

     services.Configure<RazorViewEngineOptions>(opts =>
     {
         opts.FileProviders.Add(new EntityFrameworkFileProvider(context));
     });

     services.AddMvc();
}


Related

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