2011-11-27 2 views
3

아래 정의 된대로 CodeFirst 컬렉션을 정의했습니다.중첩 컬렉션/코드 첫 번째 항목에서 항목을 계산하는 방법 EntityFramework

주어진 EmailOwnerId에 대해 실제로 모든 이미지 자체를 다운로드하지 않고 EmailDetailAttachments 레코드의 수를 계산하고 싶습니다.

은 내가

var emailsToView = (from data in db.EmailDetails.Include("EmailDetailAttachments") 
         where data.EmailAccount.EmailOwnerId = 999 
         select data).ToList(); 
int cnt = 0;  
foreach (var email in emailsToView) 
{ 
    cnt += email.EmailDetailAttachments.Count(); 
} 

처럼 뭔가를 할 수있어하지만 난 이미 내 멀리 떨어진 서버에서 이미지의 모든 바이트를 다운로드 한 것을 의미한다.

의견을 보내 주시면 감사하겠습니다.

public class EmailDetail 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 
    public int EmailOwnerId {get;set;} 

    public virtual ICollection<ImageDetail> EmailDetailAttachments { get; set; } 
    .. 
} 

public class ImageDetail 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    [MaxLengthAttribute(256)] 
    public string FileName { get; set; } 

    [MaxLengthAttribute(256)] 
    public string ContentMimeType { get; set; } 

    public byte[] ImageDataBytes { get; set; } 
    public DateTime ImageCreation { get; set; } 
} 

답변

4

엔진은이를 COUNT(*) 문으로 업데이트 할 수 있어야합니다.

그러나 올바른 (더 효율적인) SQL이 생성되는지 확인해야합니다.

+0

감사합니다. Henk, 훌륭한 기술. 나는 이것을 확실히 미래에 사용할 것이다. 나는 그걸 생각하지 않았다. –

관련 문제