2012-03-25 2 views
2

나는 열망하는 다른 엔티티와 일대 다 관계가있는 객체를 가지고 있습니다.엔티티 프레임 워크 : 연결이 잘못되었습니다.

nerddinner 예제의 paginatedList를 사용합니다. 결과적으로 (모든 연관과 필터를 사용하여) 완전하게 구성된 쿼리에서 개수를 계산합니다.

개수를 계산할 때 반환되는 총합에는 연관성이 포함됩니다 (행은 자식 연결의 객체 수만큼 복제됩니다). 부모 엔티티에서 고유 한 작업을 시도했지만 작동하지 않습니다.

어떻게해야합니까?

편집 :

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; 
} 
과 :

내가 여기에 DB에 연결하기 위해 MySQL의 커넥터를 사용하고, 내 코드입니다

+1

이 경우 어디에서 쿼리 예를 보여줄 수 있습니까? –

+0

또한'GetAll' 메소드를 보여주십시오. –

답변

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. 당신은 단지 Count을 원하는 쿼리에서 Include을 왜 사용하고 있습니까? 그것은 말도 안돼.

+0

또한 EF 4.3.1을 사용하며 생성 된 sql을 볼 수 없습니다 (MySQL 데이터베이스). NerdDinner 예제의 PaginatedList 덕분에 모든 페이지 매김을하기 전에 쿼리를 만들기 때문에 이해가됩니다 (여기를 참조하십시오 : http://nerddinnerbook.s3.amazonaws.com/Part8.htm#highlighter_938515) – Eric

+0

그렇지 않으면 거기에 포함을 취소하는 방법? – Eric

+0

그건 아주 중요한 정보입니다. MySql을 사용하면 Entity 프레임 워크에 대한 MySql 공급자에서 문제가 발생할 수 있으므로 올바르지 않습니다. –