LINQPad 在我的类型化数据上下文中调用 dispose

LINQPad calling dispose on my typed data context

我将 LINQPad 与来自我自己的程序集的类型化数据上下文一起使用。上下文 class 为我的数据库包装了一个连接对象,它在上下文构造函数中打开并在其 Dispose 方法中关闭(上下文 class 实现 IDisposable)。

我遇到的问题是,当查询为 运行 时,LINQPad 创建了上下文 class 的新实例,但在 window 关闭。因此,如果我在不关闭 window 的情况下第二次 运行 查询,则查询将挂起,因为上下文正在尝试打开已由另一个实例打开的连接。

如何让 LINQPad 在每次查询后对我的上下文 class 调用 Dispose?我想一个选择是在每个输入到 LINQPad 的查询结束时调用 this.Dispose(),但这样做有点痛苦。有什么方法可以自动化吗?

顺便说一句,我注意到在“编辑”->“首选项”->“高级”选项卡中有一个名为 "Always use Fresh Application Domains" 的 LINQPad 设置,当设置为 true 时,不再导致单个查询 运行 window挂了。但不幸的是,如果我 运行 在另一个 LINQPad window 中查询,它仍然会挂起。

你能这样用吗?

void Main(){

    using(var context = new YourAssembly.ContextClass()){
        //Your Query

    }

}

这是一个错误,现已修复(从 5.04 版开始)。

但是,请记住,在您重新运行查询(或关闭它)之前,LINQPad 不会处理数据上下文。这样一来,当您单击 运行 个额外查询的超链接时,上下文仍然有效。