c# - 当 Manager 多次调用时,C# 中的惰性单例模式出现 DataReader 错误
问题描述
我在 C# 中为我的数据管理器使用惰性单例模式。我的经理中的代码如下所示:
private static readonly Lazy<ConditionManager> singleton =
new Lazy<ConditionManager>(() => new ConditionManager());
public static ConditionManager Instance { get { return singleton.Value; } }
然后在我的代码中,我试图在创建它之前查看该项目是否存在:
//see if condition exists. If it doesn't then create it.
List<Condition> conditions = ConditionManager.Instance.Select
(question.Id, ConditionType.ProjectQuestion);
Condition c;
if (conditions.Count == 0)
{
c = new Condition(question.Id, ConditionType.ProjectQuestion, ReleaseId);
c.Id = ConditionManager.Instance.Insert(c);
}
问题是,当我调用 Insert 时,我收到可怕的错误:“已经有一个打开的 DataReader 与此命令关联,必须先关闭它。” 我找到了一种解决方法(我对 ConditionManager 进行了一次调用,既检查它是否存在,然后返回现有的新创建的一个),但是处理这个问题的正确方法是什么?如何关闭第一个实例?
解决方案
推荐阅读
- android - 将元数据添加到上传的图像 Firebase/Kotlin
- c# - 如何制作供全球使用的 DataReader
- excel - 尝试在 Excel 宏中制作图表时出错
- python - 如何在 python 和输出脚本中获取 condor 作业编号?
- visual-studio-code - Visual Studio Code 无法识别 Svelte 中的 SCSS
- raspberry-pi - 从 github 项目运行 shell 文件
- r - 当行是唯一的时,从 R 中的数据框中删除重复值
- node.js - Firebase 不读取随机键
- c# - Unity 2D,游戏对象到中心
- python - 从 TensorFlow 中的文件导入图形