2009-08-06 2 views
0

스킵 확장과 많은 관계를 다룰 때 linq에서 sql로 매우 좌절감을 느낍니다. 그것은 조인 된 쿼리를 사용할 수 없습니다. SQL Server 2005의 경우는 확실하지 않지만 현재 SQL Server 2000을 사용하고 있습니다.스토어 프로 시저 스토어드 프로 시저를 선택하여 하나의 테이블에서 join을 사용하여

이제 두 테이블이 일치하는 테이블을 가져 오는 저장 프로 시저를 작성하는 방법을 생각해 봅니다. Album_Photo (Album-> Album_Photo < -Photo) 및 Photo table을 선택하고 사진 데이터 만 원하면 앨범의 ID를 Album_Photo와 일치시키고 해당 ID를 사용하여 사진과 일치시킵니다. 스토어 프로 시저에서는 모든 조인 된 데이터를 가져옵니다. 그 후 linq to sql에서 새 Album 객체를 만듭니다.

var albums = (from r in result 
    where (modifier_id == r.ModifierID || user_id == r.UserID) 
    select new Album() { 
     Name = r.Name, 
     UserID = r.UserID, 
     ModifierID = r.ModifierID, 
     ID = r.ID, 
     DateCreated = r.DateCreated, 
     Description = r.Description, 
     Filename = r.Filename 
    }).AsQueryable(); 

나는 AsQueryable을 사용하여 결과를 IEnumerable이 아닌 IQueryable로 가져 왔습니다. 나중에 컬렉션을 사용하여 원하는 작업을 수행 할 때 다음 오류가 발생합니다.

쿼리 결과를 두 번 이상 열거 할 수 없습니다.

답변

0

나중에 코드에서 필터링 할 때까지 쿼리가 이미 실행 된 것 같습니다.

당신은 ... 같은

VAR 앨범 = (어쩌구 저쩌구) .AsQueryable() 뭔가를 할 수 있습니다. 어디 당신이 앨범 시도 할 경우 발생하는

를 처리 할 수있는 충분한 정보를 가지고 (filterClause) . (필터) 코드에서 나중에? 이게 너가 시도하는거야?

관련 문제