2014-12-15 2 views
2

모든 메서드에서 planInfo LINQ 변수에 액세스해야하는 클래스가 있습니다. using 문을 제거하고 모든 메소드에서 Dispose()을 호출하지 않고이 작업을 수행 할 수있는 방법이 있습니까?플랜 리포지토리 생성, 생성자 본문에서 키워드 사용

내가 아는 유일한 방법은 모든 메서드에 using 문을 넣고 생성자에서 제거하는 것입니다. 그러나 모든 메서드에서 where 절을 반복하지만 일정하게 유지하려고합니다.

public class PlanRepository 
{ 
    private int _patientId = 0; 
    private IQueryable<Plan> planInfo; 

    public PlanRepository(int pid) 
    { 
     if (pid == 0) { UserAccess.RedirectToLogin(); } 
     _patientId = pid; 

     using (var db = new DbConn()) 
     { 
      planInfo = db.Plans.Where(d => d.PatientId == _patientId); 
     } 
    } 

    public int GetPulse() 
    { 
     return planInfo.Select(d => d.Pulse).FirstOrDefault(); 
    } 

} 

이 코드는 분명히 db 연결이 닫혔다는 오류를 발생시킵니다. 당신이에서 DB 연결을 유지하지 않은 경우 (당신이 어떤 DB 업데이트를 볼 수 없습니다) 데이터를 캐시하는 지금

planInfo = db.Plans.Where(d => d.PatientId == _patientId).ToList(); 

,하지만 :

+0

IoC 컨테이너를보고 'DbConn'을 저장소에 주입해야합니다 –

답변

3

그냥 생성자에서 목록을 실현 첫번째 장소, 그것은 문제가되어서는 안됩니다.

목록이 구체화되면 다른 모든 기능에서 문제없이 사용할 수 있습니다.