【问题标题】:What does it mean when your DBContext is disposed?处置 DBContext 意味着什么?
【发布时间】:2013-09-05 12:59:18
【问题描述】:

我收到此错误:

操作无法完成,因为 DbContext 已被释放。描述:在执行过程中发生了未处理的异常 执行当前的 Web 请求。请查看堆栈跟踪 有关错误及其起源的更多信息 代码。异常详细信息:System.InvalidOperationException: 操作无法完成,因为 DbContext 已被释放

【问题讨论】:

  • 你的代码是什么?
  • 查看IDisposableusing 声明。您可能尝试在定义它的using 之外使用您的DBContext 对象在明确调用Dispose() 之后。
  • 什么时候出现这个错误?
  • 您能否调试您的代码并找出问题所在。然后你可以贴一些代码给我们看看。
  • 您的应用中是否有 static 上下文?

标签: c# entity-framework


【解决方案1】:

您的 DbContext 已关闭并处置,您收到错误可能是因为在处置 dbcontext 后延迟加载哪些文件。您的 DbContext 是否包含在 using 语句中?如果是这样,那么它会在调用数据库之前被处理

【讨论】:

  • 不,我的数据库不使用 using 语句
  • 您能否添加您的代码,请@user2750775 帮助我们帮助您。欢呼
  • @skyfoot 如果您认为该问题没有足够的信息来提供足够的答案,您应该投票/标记关闭,而不是尝试回答它。
【解决方案2】:

这是什么意思?

这意味着您无法继续使用您的DBContext 对象。 DBContext 实现 IDisposable;所以,它有一个Dispose() 方法:

执行与释放、释放或重置非托管资源相关的应用程序定义任务。

所以,

为什么要处置它?

Dispose() 被某处某处显式调用,或者在退出 using 块时被隐式调用。

【讨论】:

  • 这是我在控制器中的代码:protected override void Dispose(bool disposing) { db.Dispose(); base.Dispose(处置); }
  • 私有 Sprint5Entities db = new Sprint5Entities();
  • @canon 当有人没有在问题中发布足够的信息来回答它时,这意味着你应该投票结束这个问题,而不是提供一点信息作为没有回答的答案问题。
  • @canon 很明显,问题不仅仅是那个标题。你不能给出更多的信息,而你给出的信息不足以使这个答案成为一个好的答案。这就是为什么你不应该一开始就回答,你应该结束这个问题,因为这里的信息不可能给出足够好的答案。我们需要等待 OP 提供足够的信息。
【解决方案3】:

似乎您的 DbContext 连接在使用前已关闭和处置。 尝试使用块将您的代码放入其中

using(MyDbContext objDbContext = new MyDbContext())
{
  //Put your code here.

} 

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2011-01-02
    • 2020-06-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2017-02-13
    相关资源
    最近更新 更多