.
모델이 어떻게 구성되어 있는지 추정했지만 리포지토리가 아닌 데이터베이스에있는 테이블을 사용하여 문제를 해결할 수 있습니다.
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 쿼리 작성에 익숙해 질 수 있도록 도와줍니다.
다소 도움이 되었기를 바랍니다. 질문을 더 많은 정보로 자유롭게 업데이트 할 수없는 경우 (예 : 모델 또는 데이터베이스 컨텍스트에 대한 코드가 포함됩니다.
스크린 샷이 아닌 코드를 추가하십시오. 문제가 무엇인지 알려주는 오류 메시지가 표시됩니다. LINQ to Entities는 GetAll 메소드를 SQL로 변환 할 수 없습니다. 리포지토리가 아닌 데이터베이스에서 테이블을 사용하도록 코드를 재구성 해보십시오. – Scrobi
스크린 샷 대신 코드를 대체하는 것에 대해 감사드립니다. 사실 EF에서 count()에 대한 하위 쿼리를 작성하는 방법을 모르겠습니다. 이고 오류 메시지는 수행 방법을 알 수없는 메시지입니다. 이 (가) 있습니다. select threadCount = (dbo.Thread에서 선택 (1) t WHERE t.userId = @ tm.userId) 에서 dbo.ThreadMember tm 원본 SQL은 실제로 EF보다 훨씬 간단합니다. –
@Mcxie GetAll() 메소드/확장 기능을 사용하는 이유는 무엇이며,이 네임 스페이스에서이 메소드/확장/어셈블리를 가져 오지 않는 이유는 무엇입니까? – Progman