2009-10-10 5 views
1
public IQueryable<Story> FindAllStories(){ 
     var stories = (from s in db.Stories 
         orderby s.DateEntered descending 
         select new Story 
         {  
          Title = s.Title, 
          UserName = s.aspnet_User.UserName 
         } 
         ); 

     return stories; 
    } 

온라인으로 찾은 페이지 매기기 도우미가 필요한 항목 만 가져올 수 있도록이 항목을 IQueryable로 전달해야합니다. 문제는 런타임에 도우미가 source.Count()를 수행하려고 할 때입니다. 컴파일러는 '실체 유형 쿼리의 명시 적 생성'이기 때문에 행복한 캠핑카가 아닙니다.LINQ to SQL을 변경하여 런타임에 폭탄을 터뜨리지 않는 방법은 무엇입니까?

이 LINQ to SQL 메서드를 어떻게 변경합니까?

또한이 문제를 파악하기 위해 이전 코드가 작동하지 않는 이유는 무엇입니까? 나는이 작업을 수행하는 방법 (작동 확인)를 생각하기 시작하고있어

public IQueryable<Story> FindAllStories(){ 
     var stories = (from s in db.Stories 
         orderby s.DateEntered descending 
         select s); 

     return stories; 
    } 

업데이트는 POCO가 UserStory라는 만드는 것입니다. 새 클래스에는 Story 유형의 문자열과 다른 문자열 UserName의 두 가지 속성이 있습니다. 그런 다음 IQueryable of UserStory를 문제없이 반환 할 수 있습니다.

그게 좋습니다. 그러나 나는 아직도 그 방법이 효과가 있고 다른 것은 효과가없는 이유를 모르겠다. 다른 하나는 부분 클래스 Story에 문자열 UserName의 속성을 추가하고 레이어간에 해당 객체를 전달하는 것입니다. 차이점이 뭐야?

답변

0

다음 링크는 블로그 게시물입니다. tat은 (는) 당신과 비슷한 문제에 대해 설명합니다. 이 도움이

http://devlicio.us/blogs/derik_whittaker/archive/2008/04/25/linq2sql-explicit-construction-of-entity-exception.aspx

희망 :이 솔루션은 스토리 형식 대신 스토리에서 inherets 유형을 반환하는 것처럼 보인다.

+0

여기에 관해서는 알지 못하는 것이 있습니다. Story는 UserName 속성을 추가 한 부분 클래스입니다. 이제 완전히 새로운 클래스 (기사와 유사)를 만들면 : UserStory에는 2 개의 속성이 있습니다. 스토리 유형 및 문자열 UserName 내 코드가 작동합니다. 왜? 둘의 차이점은 무엇입니까? – Mike

+0

어쩌면 그 해답은이 기사의이 주석에 있습니다. "만들려는 엔티티에 디자이너의 기본 키가 없는지 확인한 다음 잘 작동합니다." 어쩌면 클래스 자체에 기본 키가 없기 때문에 새 클래스를 만드는 방법이 작동하기 때문에 ... 스토리 유형 및 문자열 UserName이 포함되어있을 수 있습니다. 그러나 부분 클래스 Story에 문자열 UserName을 추가하면 Story에 기본 키가 있다는 것을 의미합니다. 음, 여기에서 벗어나면 확실하지 않습니다. – Mike

관련 문제