아래 코드를 실행하면 데이터베이스에 대한 많은 연결이 수행되지 않습니다.Codefluent : 스레드 연결이 끝난 후에도 데이터베이스에 대한 연결이 남아 있습니다.
SELECT COUNT(dbid) as TotalConnections FROM sys.sysprocesses WHERE dbid > 0
자세한 내용을 보려면 다음 명령을 실행하십시오. 당신은 '기다리는 중 COMMAND'상태와 연결을 많이 볼 수 있습니다 : 나는 스레드가 종료하고 연결을 닫은 후 Codefluent 지속성 컨텍스트가 없어 질 것이라고 가정했을
sp_who2
. Codefluent가 풀의 연결을 닫도록 강제 할 수 있습니까?
public void TestThreads()
{
for (var i = 0; i < 1000; i++)
{
var t = new Thread(() => StaticticThreadContainer.Test());
t.Start();
}
}
public static int Test()
{
var p = CwObject.LoadByEntityKey("baf04c09-7415-497d-b3cd-00004266f503");
return 1;
}
나는 조금 더 알아 냈습니다. 스레드에서 반환하기 전에 다음 코드를 호출하면 연결이 제대로 닫힙니다. 이게 가야 할 길인가?
CodeFluentContext.Get(Compareware.Constants.ApplicationStoreName).Persistence.ResetConnection();
어떤 형태의 연결 풀링 때문일 수 있습니까? –
난 그렇게 생각, Codefluent 스레드 당 하나의 연결을 사용합니다. 그러나 스레드가 사라지면 연결이 여전히 거기에 있습니까? –
CodeFluent에 익숙하지 않기를 바랍니다. 하지만 DB 커넥션 풀링은 일반적으로 비활성 커넥션을 유지하고 재사용함으로써 DB 커넥션을 생성하고 개방하는 비교적 비싼 (시간) 프로세스를 피하려고 시도합니다. –