스킵 확장과 많은 관계를 다룰 때 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로 가져 왔습니다. 나중에 컬렉션을 사용하여 원하는 작업을 수행 할 때 다음 오류가 발생합니다.
쿼리 결과를 두 번 이상 열거 할 수 없습니다.