2013-09-30 4 views
0

필자는 나에게 로컬 임시 테이블을 사용해야하는 작업이 있습니다. 성능상의 이유로 인해 트랜잭션을 사용할 수 없습니다.DAAB을 사용하여 연결을 유지하는 방법은 무엇입니까?

트랜잭션과 매우 유사한 임시 테이블은 모든 쿼리가 닫히거나 다시 설정되면 안되는 연결에서 이루어져야합니다. 어떻게하면 엔터프라이즈 라이브러리 데이터 액세스 응용 프로그램 블록을 사용하여이를 수행 할 수 있습니까?

+0

DAAB을 통해 서버에있는 임시 테이블의 데이터를 조작 하시겠습니까? 데이터 클라이언트 측을 조작 할 수 없습니까? – Rikalous

+0

예, 모든 쿼리는 DAAB를 통과해야합니다. 성능상의 이유로 때로는 클라이언트 측 데이터 조작을 수행하는 것이 실용적이지 않습니다. 이들은 드문 경우지만 존재합니다. – Nezreli

답변

1

Enterprise Library는 트랜잭션이 활성화되어 있으면 단일 데이터베이스 연결을 사용합니다. 그러나 트랜잭션이 없을 경우 모든 데이터베이스 메소드에 대해 단일 연결을 강제 수행 할 수있는 방법은 없습니다.

Database.CreateConnection 메서드를 사용하여 데이터베이스 연결을 사용할 수 있습니다. 그런 다음 해당 연결을 사용하여 DbCommand 개체를 사용하여 적절한 논리를 수행 할 수 있습니다.

다른 접근법은 Enterprise Library 소스 코드를 수정하여 원하는 것을 정확하게 수행하거나 연결 관리를 수행하지 않는 새 Database 구현을 작성하는 것입니다.

+0

Database.ExecuteNonQuery (DbCommand) 메서드의 소스 코드는 명령에 이미 연결되어 있어도 DAAB가 항상 새로운 연결을 열어 준다는 것을 나타냅니다. 따라서 CreateConnection 메서드가 어떻게 구현 될지 잘 모르겠습니다. – Nezreli

+0

당신은'CreateConnection'을 호출하고 그 연결을 유지하고 필요할 때까지 사용할 수 있습니다. –

+0

즉, Database.Execute * 메서드는 자체 연결을 만들기 때문에 사용할 수 없습니다. 이렇게하면 무엇을 잃을까요? – Nezreli

0

DAAB로 그 방법을 알 수 없습니다. 난 당신이 다시 ADO.Net 연결을 사용하여 자신을 관리하는 드롭 다운해야 할 것 같아요하지만, 그럼에도 불구하고, 클라이언트 쪽 응용 프로그램에서 서버의 임시 테이블 놀고 문제에 대한 최적의 해결책으로 나를 공격하지 않습니다 .

관련 문제