세부 사항을 객체 일반적인 방법의 모습는
public DataSet DataAdapter(CommandType cmdType, string cmdText, Parameters[] cmdParms)
{
DbDataAdapter dda = null;
try
{
EstablishFactoryConnection();
dda = oFactory.CreateDataAdapter();
PrepareCommand(false, cmdType, cmdText, cmdParms);
dda.SelectCommand = oCommand;
DataSet ds = new DataSet();
dda.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (null != oCommand)
oCommand.Dispose();
CloseFactoryConnection();
}
}
CloseFactoryConnection(); 방법은
public void CloseFactoryConnection()
{
//check for an open connection
try
{
if (oConnection.State == ConnectionState.Open)
{
oConnection.Close();
oConnectionState = ConnectionState.Closed;
}
}
catch (DbException oDbErr)
{
//catch any SQL server data provider generated error messag
throw new Exception(oDbErr.Message);
}
catch (System.NullReferenceException oNullErr)
{
throw new Exception(oNullErr.Message);
}
finally
{
if (null != oConnection)
oConnection.Dispose();
}
}
아래 질문처럼 -이 클래스 (DBHelper)가 IOC 컨테이너 생성자이 주입 내 모든 저장소에 사용하고있다. 이 인스턴스의 라이프 스타일은 HttpContextLifecycle입니다. (이 라이프 스타일을 나타내는 Structuremap을 사용하면 HttpContext.Items 컬렉션에 인스턴스가 하나씩 저장된다는 의미입니다.)
DB 연결 클래스에 대한 라이프 스타일을 사용하고 있습니까?
연결을 생성하는 클래스/열기/닫기가 싱글 톤으로 인스턴스화되어야합니까? 또는 요청 당?
DB 연결 설정 클래스에서 일반적으로 받아 들여지는 라이프 스타일은 무엇입니까? 나는 ado.net을 사용 중이며 ORM도 없습니다. ADO.NET 이미 연결 풀링을 사용하기 때문에
감사
답장을 보내 주셔서 감사합니다. 나는 이것을 선내에 가지고 간다. 그러나 이것이 내가 제거 할 수없는 유산 코드이다. db connection 등을 다루는이 방법을 사용했다면 인스턴스화 된 객체의 라이프 스타일에 대해 어떻게 생각하십니까? 요청에 따라 적절하다고 생각하십니까? –
이 클래스가 주어진 클래스이고 인스턴스화 할 때 결정해야하는 모든 것은 사용자의 필요에 따라 요청하십시오.이 클래스는 공유 상태를 나타내므로 상태가 실제로 공유되지 않으면 버그가 발생할 가능성이 가장 적기 때문입니다. 성능에 미치는 영향은 무시해도 좋을 것입니다. 왜냐하면 말했듯이 실제로 그렇게 많이하는 것은 아닙니다. –