ABP 框架 LINQ to Entities 用于子查询 'count'

ABP framework LINQ to Entities for subquery 'count'

查询GetAllForumMember,有什么建议吗?

System.NotSupportedException:“LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[Weixin.Kia.Community.ThreadComment] GetAll()' method, and this method cannot be translated into a store expression.”

目前您的代码正在调用您的存储库 class,Entity framework 无法将其转换为 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 查询。

希望对您有所帮助。如果不能随时使用更多信息更新您的问题,例如包括模型或数据库上下文的代码。