LINQPad调用处理我的类型数据上下文

时间:2015-12-17 14:37:49

标签: c# .net linqpad

我正在使用LINQPad和我自己的程序集中的类型化数据上下文。上下文类包装了我的数据库的连接对象,该对象在上下文构造函数中打开并在其Dispose方法中关闭(上下文类实现IDisposable)。

我遇到的问题是LINQPad在运行查询时创建上下文类的新实例,但在窗口关闭之前不会在任何现有实例上调用dispose。因此,如果我第二次运行查询而不关闭窗口,则查询会在上下文尝试打开已由另一个实例打开的连接时挂起。

如何在每次查询后让LINQPad在我的上下文类中调用Dispose?我想一个选项只是在输入到LINQPad的每个查询结束时调用this.Dispose(),但是要做到这一点有点痛苦。有没有办法实现自动化?

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

2 个答案:

答案 0 :(得分:2)

你能这样用吗?

void Main(){

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

    }

}

答案 1 :(得分:2)

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

但是,请记住,在重新运行查询(或关闭查询)之前,LINQPad不会处置数据上下文。这样,当您单击运行其他查询的超链接时,上下文仍然存在。