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