Я создаю программу, которая переносит базу данных с одного сервера SQL (на одном ПК) на локальный экземпляр.После передачи API (Entity Framework) будет подключаться к нему и запускать на нем некоторые вещи.Затем он отключится, и два сценария SQL будут запущены на нем через класс SqlCommand.После этого резервная копия базы данных будет сохранена, а локальная временная база данных будет удалена.Проблема, с которой я сталкиваюсь, заключается в том, что экземпляр SqlCommand, который сначала подключается (до передачи), который создает базу данных, отключается без проблем (я проверяю активные подключения через Management Studio).Но как только контекст сущностей соединяется, даже с вызовом context.Dispose (), он не отключается.Затем я создаю экземпляр сервера для запуска сценариев SQL (расположенных в подпапке) с кодом, подобным следующему:
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();
Вызов Disconnect здесь также не разрывает соединение.Поэтому, когда я ухожу, чтобы удалить базу данных, я обнаруживаю, что не могу, потому что есть 2 активных соединения.Есть ли что-то, что я делаю здесь не так или что-то, чего мне не хватает?NonPooledConnection = true - это то, что я нашел в Интернете, чтобы попробовать, если Disconnect не работает, но, очевидно, это тоже не работает.В противном случае мой код выглядел бы так:
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();
Я уверен, что я отключаю предыдущие соединения, прежде чем делать какие-либо новые.Единственный способ отключить сущности - закрыть программу, и это, очевидно, не то, что я хочу.
Любая помощь будет принята с благодарностью, спасибо.