20Q20A
재미있는 질문과 답변으로 서로에 대해서 알아봅시다!
▶▶▶▶▶ 아래의 템플릿을 기재해 주시면 상세히 답변해 줄 수 있습니다.
1. 사용언어 (c# , vb.net) c# 2. 사용툴 (VS2005, VS2008) vs2008 sp1 3. 운영체제 (WIN 2003, XP) xp 4. 별도사항 Entity Framework
▶▶▶▶▶ 질문내용
안녕하세요 오랜만에 글을 남깁니다^^
요즘 EntityFramework로 프로젝트를 진행중인데요.. 몇가지 질문이 있어서 혹시 아시는분이 있나해서 글을 남깁니다.
질문1. 쿼리시 계속 DB에 접속문제 해결방법좀..
//1.엔티티 선언
FirstEntities TestEntities= new FirstEntities(myConnection);
//2.GROUP테이블의 모든 내용 가지고 오기
IQueryable<GROUP> allObjGrp = TestEntities.GROUP.Include("OBJECT").Include("USER_MNG").Select(obj => obj);
//3.전체 내용에서 원하는 내용 쿼리
IQueryable<GROUP> myObjGrp = allObjGrp.
Where(obj => obj.MKEY == 1).
Select(obj => obj);
이런 식으로 하면 3번에서는 2번의 데이터를 메모리상에서 가지고와서 읽는줄 알았는데 3번역시 디비에 한번 다녀오네요ㅠㅠ 그래서 속도가 너무 떠러져요.. 혹시 처음에 가지고온데이터를 가지고 조작하는 방법 아시나요?
DataSet사용할때처럼요..
질문2. 트랜젝션 문제
이것도 위와 거의 비슷한 증상입니다.
EntityFramework에서는 TransactionScope를 사용해서 트랜젝션을 하게되는데요.
위1번처럼 선언하고
using(TransactionScope ts=new TransactionScope()){
//1.GROUP테이블 내용 가지고 오기
var grp = TestEntitiesGROUP.Select(obj => obj);
//2.GROUP2테이블 내용 가지고 오기
var grp2 = TestEntitiesGROUP2.Select(obj => obj);
....생략...
}
이런식으로 진행을하면 2번에도 또 디비에 커넥션을 생성해서 오류가 발생하네요..
이 두문제 해결방법 아시는분 답변좀 주세요 ㅠㅠㅠ
댓글
댓글 리스트-
작성자☞▽☜메렁 작성자 본인 여부 작성자 작성시간 09.05.08 2번문제는 해결했습니다. FirstEntities TestEntities= new FirstEntities(myConnection); 이 부분을 싱글톤으로 생성했는데 쿼리 날릴때마다 커넥션을 Open해서 그랬었네요.. 매소드마다 if (TestEntities.Connection.State != System.Data.ConnectionState.Open) { TestEntities.Connection.Open(); } 이걸 붙이면 해결!!
-
작성자☞▽☜메렁 작성자 본인 여부 작성자 작성시간 09.05.08 이제 1번 속도문제만 해결하면되네요ㅠㅠ 아 힘들다~~아는분 없나요? ㅠㅠ 쿼리한 내용을 DataTable에 저장하는 방법이라도 ㅠㅠ
-
작성자☞▽☜메렁 작성자 본인 여부 작성자 작성시간 09.05.13 진정 아무도 모른단말입니까~ㅠㅠㅠㅠㅠㅠㅠ