gpt4 book ai didi

c# - DbContext 获取在使用区域内处理

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:47 25 4
gpt4 key购买 nike

我刚刚发现,当我尝试在我的 DbContext 中的 DbSet 上使用 .Add() 方法时,出现以下异常:

System.InvalidOperationException : The operation cannot be completed because the DbContext has been disposed.

这个堆栈跟踪让我回到了这个方法的第 238 行: Method

现在这个方法确实使用了另外两种方法(CheckForBleKeyInDbCheckForMpSwitchInDb),它们使用它们自己的using(_db = new BeheerContext()) 但是由于某种原因这不会产生任何错误。

测试变量不会产生任何异常,可能是因为它们实际上并没有连接到数据库,至少这是我的猜测。

我想知道究竟是什么导致了这个异常,我该如何防止它。

最佳答案

不要在你的类中使用上下文作为字段,然后所有方法共享它并在它们的 using 语句结束时处理它。

Now it is true that this method uses two other methods (CheckForBleKeyInDb and CheckForMpSwitchInDb) which use their own using(_db = new BeheerContext()) but this doesn't generate any errors for some reason.

因此,在第一次调用这些方法后,您的上下文也会被释放。

而是在方法中创建它们(var _db = ...):

using(var _db = new BeheerContext())
{
//...
}

您的测试变量不会产生异常,因为它们不会从表中进行选择。例如,如果你使用

,你会得到同样的异常
var test1 = _db.BleKeys.First();

关于c# - DbContext 获取在使用区域内处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45738018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com