我正在使用LINQPad和我自己的程序集中的类型化数据上下文。上下文类包装了我的数据库的连接对象,该对象在上下文构造函数中打开并在其Dispose方法中关闭(上下文类实现IDisposable
)。
我遇到的问题是LINQPad在运行查询时创建上下文类的新实例,但在窗口关闭之前不会在任何现有实例上调用dispose。因此,如果我第二次运行查询而不关闭窗口,则查询会在上下文尝试打开已由另一个实例打开的连接时挂起。
如何在每次查询后让LINQPad在我的上下文类中调用Dispose?我想一个选项只是在输入到LINQPad的每个查询结束时调用this.Dispose()
,但是要做到这一点有点痛苦。有没有办法实现自动化?
顺便说一句,我注意到在Edit-> Preferences-> Advanced选项卡中有一个名为“Always use Fresh Application Domains”的LINQPad设置,当设置为true时,不再导致查询在单个窗口中运行挂。但不幸的是,如果我在另一个LINQPad窗口中运行查询,它仍然会挂起。
答案 0 :(得分:2)
你能这样用吗?
void Main(){
using(var context = new YourAssembly.ContextClass()){
//Your Query
}
}
答案 1 :(得分:2)
这是一个错误,现已修复(从5.04版开始)。
但是,请记住,在重新运行查询(或关闭查询)之前,LINQPad不会处置数据上下文。这样,当您单击运行其他查询的超链接时,上下文仍然存在。