2012-03-25 15 views
2

我有一個對象與一個一對多的關係,另一個實體是急切加載的。實體框架:錯誤計數與關聯

我使用nerddinner示例的paginatedList,因此我對完全形成的查詢(包含所有關聯和過濾器)進行計數。

當我進行計數時,返回的總數包括關聯(行重複的次數與子關聯中的對象數相同)。 我試圖做一個獨特的父母entitiy,但它不工作。

我該怎麼辦?

編輯:

我使用MySQL連接器連接到數據庫,這裏是我的代碼:

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; 
} 
+1

你可以展示查詢的例子嗎? – 2012-03-25 21:00:32

+0

也請顯示你的'GetAll'方法。 – 2012-03-26 08:35:31

回答

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] 

Btw。你爲什麼在查詢中只用Include?這個不成立。

+0

我也使用EF 4.3.1,我無法管理查看計數生成的SQL(我在MySql數據庫)。 它是有道理的,因爲我之前創建我的查詢來分頁一切感謝NerdDinner示例的PaginatedList(請參閱:http://nerddinnerbook.s3.amazonaws.com/Part8.htm#highlighter_938515) – Eric 2012-03-27 07:11:44

+0

否則,是否有一個方法來撤消包含? – Eric 2012-03-27 07:22:16

+0

這是相當重要的信息。您正在使用MySql,因此在實體框架的MySql提供程序中可能會出現問題,因爲您看到的行爲不正確。 – 2012-03-27 08:01:34