Tha*_*abo 1 c# linq multithreading design-patterns linq-to-sql
我在Linq to SQL中有一些困惑.我正在寻找数据上下文类有时会给出以下异常的实际原因.
"已经有一个与此命令关联的开放式数据读取器必须先关闭
特别是在多任务环境中.大多数人都说,原因是,数据上下文不是线程安全.所有建议使用DataContex作为每个单元的工作.
请参考以下主题以获得最佳答案
但在我的情况下,我正在使用另一个类调用"A",它以Singleton模式实现.这个类的用途是,以单例方式提供数据上下文对象.我维护此类"A"的实例作为派生的全局实例类和使用特定实例调用Datacontex.
我的问题是,
我的方法调用会导致无法控制的内存增长吗?根据我的理解,单例将一个实例保持为静态对象.如果我的假设是错误的,请给我很好的解释.
注意:
我的方法调用的任何方式也抛出相同的异常.所以我相信在这种情况下也会发生同样的问题.
你的方法一般会引起问题.A DataContext不是单身人士.只是不要这样做.
即使A是单例,也要DataContext在其中的适当方法中创建一个新的A,而不是在其中DataContext包含一个变量A.(你可能还想考虑一下是否A真的应该是一个单身人士.)