3
我已经实现了EntityFrameworkFileProvider
我的ASP.NET核心的Web应用程序,我想ViewDbContext
实例由ASP.NET核心DI框架在构造函数中注入:如何正确注入startup.cs的ConfigureServices方法中的DbContext实例(ASP.net core 1.1)?
(ViewDbContext
是dbContext
)
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);
}
}
现在我将EntityFrameworkFileProvider
添加到RazorViewEngineOption
在startup.cs 如何使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();
}
使用你的方法,是不是说同一个上下文对象被一次又一次地使用......每次框架想要检索文件细节或检查文件是否已经改变。如果上下文正在跟踪对象,这可能会导致内存泄漏。我看到的示例为每个调用使用了一个新的数据库上下文。 –