Entity Framework: неверный счет с ассоциацией - PullRequest
2 голосов
/ 25 марта 2012

У меня есть объект с отношением один-ко-многим с другим объектом, который загружен с нетерпением.

Я использую paginatedList примера nerddinner, в результате я делаю счет для полностью сформированного запроса(со всеми ассоциациями и фильтрами).

Когда я выполняю подсчет, возвращаемая сумма включает в себя ассоциацию (строки дублируются столько раз, сколько объектов в дочерней ассоциации).Я попытался сделать отдельное родительское имя, но оно не работает.

Что я могу сделать?

Редактировать:

Я использую соединитель 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 Ответ

1 голос
/ 27 марта 2012

Я попробовал в точности ваш код с 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?Это не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...