c#ConnectionContext和EF不会中断数据库连接
我正在创建一个程序,将数据库从一台SQL server(在一台PC上)传输到本地实例。在传输之后,一个API(实体框架)将连接到它并在上面运行一些东西。然后它将断开连接,并通过SqlCommand类在其上运行两个SQL脚本。之后,将备份和保存数据库,并删除本地临时数据库。我遇到的问题是,创建数据库的第一个连接(在传输发生之前)的SqlCommand实例断开连接时没有出现问题(我通过managementstudio检查活动连接)。但是一旦实体上下文连接,即使使用context.Dispose()调用,它也不会断开连接。然后,我创建一个服务器实例来运行SQL脚本(位于子文件夹中),代码如下:c#ConnectionContext和EF不会中断数据库连接,c#,sql,C#,Sql,我正在创建一个程序,将数据库从一台SQL server(在一台PC上)传输到本地实例。在传输之后,一个API(实体框架)将连接到它并在上面运行一些东西。然后它将断开连接,并通过SqlCommand类在其上运行两个SQL脚本。之后,将备份和保存数据库,并删除本地临时数据库。我遇到的问题是,创建数据库的第一个连接(在传输发生之前)的SqlCommand实例断开连接时没有出现问题(我通过managementstudio检查活动连接)。但是一旦实体上下文连接,即使使用context.Dispose()调
FileInfo file = new FileInfo(filename);
string removeRecords = file.OpenText().ReadToEnd();
file.OpenText().Close();
Server srv = new Server(new ServerConnection(this.myScriptConn));
ServerConnection srvConn = new ServerConnection();
srvConn.NonPooledConnection = true;
srvConn = srv.ConnectionContext;
Server server = new Server(srvConn);
server.ConnectionContext.ExecuteNonQuery(removeRecords);
server.ConnectionContext.Disconnect();
这里的断开呼叫也不会中断连接。因此,当我删除数据库时,我发现我无法删除,因为有两个活动连接。这里有什么我做错了的还是我遗漏了什么?NonPooledConnection=true是我在网上发现的,如果断开连接不起作用,我可以尝试使用它,但显然也不行。否则,我的代码将如下所示:
FileInfo file = new FileInfo(filename);
string removeRecords = file.OpenText().ReadToEnd();
file.OpenText().Close();
Server server = new Server(new ServerConnection(this.myScriptConn));
server.ConnectionContext.ExecuteNonQuery(removeRecords);
server.ConnectionContext.Disconnect();
我确信在进行任何新连接之前,我正在断开以前的连接。断开实体连接的唯一方法是关闭程序,这显然不是我想要的
任何帮助都将不胜感激,谢谢 我刚刚发现执行SqlConnection.ClearAllPools()可以修复问题并断开所有活动连接。我刚刚发现执行SqlConnection.ClearAllPools()可以修复问题并断开所有活动连接