На данный момент ваш код вызывает ваш класс репозитория, и структура Entity не может преобразовать это в SQL.
Я предположил, как устроены ваши модели, но вы можете решить свою проблему, используя таблицы в базе данных, а не в своем репозитории.
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, которые могут помочь вам привыкнуть к написанию запросов Linq в вашей базе данных.
Я надеюсь, что это несколько полезно. Если вы не можете обновить свой вопрос, добавив дополнительную информацию, например. включая код для ваших моделей или контекст базы данных.
person
Scrobi
schedule
04.09.2017
GetAll
в SQL. Попробуйте реструктурировать код, чтобы использовать таблицы в базе данных, а не в репозиториях. - person Scrobi   schedule 04.09.2017GetAll()
и из какого пространства имен вы получаете этот метод/расширение/сборку? - person Progman   schedule 04.09.2017