我有一个与另一个真正加载的实体有一对多关系的对象。
我使用了nerddinner示例的paginatedList,因此我对完全形成的查询进行了计数(包含所有关联和过滤器)。
当我进行计数时,返回的总数包括关联(行重复次数与子关联中的对象数一样多)。 我尝试在父母权利上做一个明确的但是它不起作用。
我该怎么办?
编辑:
我使用Mysql连接器连接到db,这是我的代码:
public class Post
{
[Key]
[Column("idPost")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Column("title")]
[Required(AllowEmptyStrings = false)]
public string Title { get; set; }
(....)
[InverseProperty("Post")]
public ICollection<PostCategory> Categories { get; set; }
}
public class PostCategory
{
[Key, Column("idPost", Order = 0)]
public int PostID { get; set; }
[Key, Column("name", Order = 1)]
public string Category { get; set; }
[Association("PostCategory_Post", "PostID", "ID")]
public virtual Post Post { get; set; }
}
//电话
postRepository.GetAll().Includes(p => p.Categories).Count();
与
public virtual IQueryable<T> GetAll()
{
IQueryable<T> query = dbContext.Set<T>();
return query;
}
答案 0 :(得分:1)
我已经使用EF 4.3.1准确地尝试了您的代码,而Count
的行为符合预期 - 它只计算主要实体(Post
)。它甚至不在数据库中执行任何连接:
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[Posts] AS [Extent1]
) AS [GroupBy1]
顺便说一下。为什么您在Include
的查询中使用Count
?这毫无意义。