2012-09-18 1 views
4

예제를 사용하여 Using 문을 사용하여 인스턴스를 열고 세션을 만들고 데이터베이스에 연결 한 다음 열어 트랜잭션을 열고 레코드를 저장하는 등 몇 가지 작업을 수행해 보았습니다. 그러나 각 작업에이 패턴을 사용할 때. 저장과 같은 각 작업은 0.5 초 정도 걸립니다. 그래서 내가 잘못하고 있다고 생각합니다. 하지만 어떻게해야하는지 잘 모르겠습니다.Esent를 관리 Esent 래퍼와 함께 사용해야합니까?

하나의 인스턴스 만 가질 수 있습니까? 다르게 명명 된 경우 더 가질 수 있습니까?

둘 이상의 스레드가있는 경우 더 많아야합니까?

동시에 여러 세션을 열어 볼 수 있습니다. 모든 세션을 첨부해야하나요? 각 세션마다 데이터베이스를 열어야합니까? 이러한 다양한 시나리오를 테스트 할 때 일관성없는 결과가 나타납니다. 때로는 테스트가 통과 할 때가끔 예외가 발생합니다. 예를 들어 폐기 된 객체를 사용하거나 EsentTempPathInUseException을 사용하는 것입니다.

이렇게 사용 방법에 대한 지침이 있습니까?

답변

9

나는 인스턴스를 생성하는 것은 정말 데이터베이스를 만들고 있기 때문에 매우 비싸다,

당신은 하나의 인스턴스 만이 있어야합니다 ... 알려서이나 시행 착오에 의해하지만 여기를보고 누군가를 위해 이러한 답을 발견했다 자체는 예기치 않게 종료되면서 스스로를 치료하여 필요할 경우 해당 루틴을 실행할 수 있습니다. 다른 이름으로 이름을 지정하면 둘 이상의 인스턴스를 열 수 없습니다. 첫 번째 인스턴스와 다른 인스턴스를 만듭니다. 중복되면 오류가 발생합니다.

멀티 스레딩에는 문제가 없습니다. 한 번 데이터베이스를 엽니 다. 한 번 세션을 연결하십시오. 세션은 스레드를 가로 지르지 않아야합니다. 데이터베이스에 각각 액세스하는 고유 한 세션을 가진 다중 스레드를 가질 수 있습니다. 관리되는 escent 오브젝트를 처리하십시오. 예제를 따라 "Using"문을 사용하거나 객체가 해당 문을 처리하는지 확인하십시오.

현재 인스턴스가 아직 사용 중일 때 두 번째 인스턴스를 열려고하면 EsentTempPathInUseException이 throw됩니다.

배치 된 객체 예외는 내가 존재하지 않아야하는 Managed Esent 객체의 생성 및 처리와 겹치기 때문에 발생했습니다.

관련 문제