동일한 DbCommand를 다시 사용하고 동일한 요청에서 DB에 액세스해야 할 때마다 새 연결을 설치하지 않으려면 DbCommand를 저장하고 반환하는 메서드를 만들었습니다 그것은 그 이전에 인스턴스화 된 경우 : 나는 그것을 사용하여 URL에 2 개 개의 동시 요청을 할 때ASP.Net 코어 Npgsql 작업이 이미 진행 중입니다.
var dbCommand = InformacionInscripcionesViewModel.GetDbCommand();
dbCommand.CommandText = @"SELECT sga_propuestas.nombre_abreviado AS nombre_carrera, ....";
dbCommand.ExecuteNonQuery();
, 그것은으로 dbCommand.ExecuteNonQuery();
에서 예외가 발생합니다 : 그것은이 모델에 사용되는 방법의
public static class InformacionInscripcionesViewModel {
private static NpgsqlConnection _dbConnection;
private static NpgsqlCommand _dbCommand;
private static NpgsqlCommand GetDbCommand() {
InformacionInscripcionesViewModel._dbConnection = InformacionInscripcionesViewModel._dbConnection ?? new NpgsqlConnection("Host=192.168.1.127;Username=siu;Password=123456;Database=guaraniprueba20160816");
if (InformacionInscripcionesViewModel._dbConnection.State == ConnectionState.Closed)
InformacionInscripcionesViewModel._dbConnection.Open();
return InformacionInscripcionesViewModel._dbCommand
?? (InformacionInscripcionesViewModel._dbCommand = new NpgsqlCommand {Connection = InformacionInscripcionesViewModel._dbConnection});
}
}
예 메시지 An operation is already in progress
.
이 문제를 방지하려면 어떻게해야합니까? 사용하기 전에 항상 DbCommand
을 순간 실행해야합니까? 이것에 대한 어떤 불빛이라도?
{System.InvalidOperationException: An operation is already in progress.
at Npgsql.NpgsqlConnector.StartUserAction(ConnectorState newState)
at Npgsql.NpgsqlCommand.ExecuteNonQueryInternal()
at Npgsql.NpgsqlCommand.ExecuteNonQuery()
at SIUNPAZ.Models.InformacionInscripcionesViewModels.InformacionInscripcionesViewModel.GetTotalesInscripcionesPorMaterias(DateTime fechaDesde, DateTime fechaHasta, String carrera)
at SIUNPAZ.Controllers.InformacionInscripcionesController.PorMaterias(DateTime fechaDesde, DateTime fechaHasta, String carrera)
at lambda_method(Closure , Object , Object[])
at Microsoft.AspNetCore.Mvc.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionFilterAsync>d__28.MoveNext()}
그래서 NpgsqlConnection 또는 NpgsqlCommand를 처리해야합니까? – JorgeeFG
확실히 연결을 처리하십시오. 명령의 연결 속성을 설정 해제하고 와드 다음에 다시 설정할 수는 있지만 명령을 많이 저장하지는 않습니다 (자체 명령은 "light"입니다). 그래서 실제로 두 명령을 사용하여 '차단하고 자동으로 처리하도록하십시오. –