2017-09-04 6 views
0

GetAllForumMember에 대한 쿼리, 어떤 조언이 필요하십니까?ABP 프레임 워크 하위 쿼리 '개수'에 대한 엔티티 LINQ

ScreenShot

System.NotSupportedException "LINQ 엔티티는 방법 'System.Linq.IQueryable`1 [Weixin.Kia.Community.ThreadComment] GETALL() 메소드를 인식하지 않고, 이 방법은 상점 표현으로 변환 할 수 없습니다. "코드가 SQL로 그것을 변환 할 수 없습니다 저장소 클래스와 엔티티 프레임 워크를 호출하는 순간

+0

스크린 샷이 아닌 코드를 추가하십시오. 문제가 무엇인지 알려주는 오류 메시지가 표시됩니다. LINQ to Entities는 GetAll 메소드를 SQL로 변환 할 수 없습니다. 리포지토리가 아닌 데이터베이스에서 테이블을 사용하도록 코드를 재구성 해보십시오. – Scrobi

+0

스크린 샷 대신 코드를 대체하는 것에 대해 감사드립니다. 사실 EF에서 count()에 대한 하위 쿼리를 작성하는 방법을 모르겠습니다. 이고 오류 메시지는 수행 방법을 알 수없는 메시지입니다. 이 (가) 있습니다. select threadCount = (dbo.Thread에서 선택 (1) t WHERE t.userId = @ tm.userId) 에서 dbo.ThreadMember tm 원본 SQL은 실제로 EF보다 훨씬 간단합니다. –

+0

@Mcxie GetAll() 메소드/확장 기능을 사용하는 이유는 무엇이며,이 네임 스페이스에서이 메소드/확장/어셈블리를 가져 오지 않는 이유는 무엇입니까? – Progman

답변

0

.

모델이 어떻게 구성되어 있는지 추정했지만 리포지토리가 아닌 데이터베이스에있는 테이블을 사용하여 문제를 해결할 수 있습니다.

public class ForumMember 
{ 
    public int Id { get; set; } 
} 

public class Member 
{ 
    public int MemberId { get; set; } 
} 

public class ThreadComment 
{ 
    public int CreatorUserId { get; set; } 
} 


public class ForumContext : DbContext 
{ 
    public DbSet<ForumMember> ForumMembers { get; set; } 
    public DbSet<Member> Members { get; set; } 
    public DbSet<ThreadComment> ThreadComments { get; set; } 
} 

public class Repository 
{ 
    public IEnumerable<Something> GetAllForumMember() 
    { 
     using (var context = new ForumContext()) 
     { 
      var query = from fm in context.ForumMembers 
         join m in context.Members on fm.Id equals m.MemberId 
         //where add where clause 
         select new Something 
         { 
          memberId = m.MemberId, 
          commentCount = context.ThreadComments.Count(x => x.CreatorUserId == m.MemberId) 
          //... add other properties that you want to get. 
         }; 

      return query.ToList(); 

     } 
    } 
} 

테스트되지 않은 코드입니다. Entity Framework & Linq-to-SQL을 사용하는 방법에 대한 학습 곡선이 있으므로 자습서를 계속 진행하는 것이 좋습니다. LinqPad와 같은 도구를 얻을 수도 있습니다. LinqPad는 데이터베이스에 Linq 쿼리 작성에 익숙해 질 수 있도록 도와줍니다.

다소 도움이 되었기를 바랍니다. 질문을 더 많은 정보로 자유롭게 업데이트 할 수없는 경우 (예 : 모델 또는 데이터베이스 컨텍스트에 대한 코드가 포함됩니다.

+0

감사합니다. 탐색 속성도 사용할 수 있습니다. –