如何解决在处理之前只能使用 dbcontext 一次
我正在使用 asp.net core 3.1 处理一个站点,我试图在页面模型中读取数据库两次。但是,我收到“System.OnbjectDisposedException:无法访问已处理的对象”错误。这是我的 Index.cshtml.cs 的片段
public class IndexModel : PageModel
{
private readonly DocsiteContext _context;
public IndexModel(DocsiteContext context)
{
_context = context;
}
public Document CurrDocument;
public void OnGet()
{
FunctionA();
}
private async void FunctionA()
{
List<string> AllDocs = await _context.Documents.OrderBy(d => d.FileName).Select(d => d.FileName).ToListAsync();
FunctionB();
}
private async void FunctionB()
{
CurrDocument = await _context.Documents.FirstOrDefaultAsync(f => f.FileName == CurrPath && !f.IsDirectory);
}
}`
这是 Startup.cs 类的片段
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<DocsiteContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DocsiteContext")));
}
我知道第一次使用后会处理上下文,但我不确定如何让它保持第二次使用。 我对 asp.net 还很陌生,所以如果这是错误的方法,我希望得到一些建议!
解决方法
DbContext 是一个“作用域”服务。这意味着为每个 HTTP 请求创建一个新的 dbContext。如果您执行诸如重定向到另一个页面之类的操作,您将获得一个新的 dbContext 对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。