2013-01-11 40 views
0

我想弄清楚如何獲取特定ProjectDoc.OfType的ProjectSummaryVotes的計數。查詢有效,但ProjectSummaryVote屬性爲null,這意味着我得到一個空值錯誤。這是可行的嗎?如果我需要這樣做,我應該放棄TPH繼承嗎?使用TPH繼承的LINQ查詢 - 獲得派生類ICollection count

型號:

public class Project 
{ 
    public int ProjectID { get; set; } 
    public virtual ICollection<ProjectDoc> ProjectDoc { get; set; } 

} 
public abstract class ProjectDoc 
{ 
    public int ProjectDocID { get; set; } 
    public int ProjectID { get; set; } 
    public string DocTitle { get; set; } 
    public string Status { get; set; } 
    public DateTime DateCreated { get; set; } 

    public virtual Project Project { get; set; } 
    public virtual ICollection<Comment> Comment { get; set; } 
} 

public class Summary : ProjectDoc 
{ 
    [DataType(DataType.MultilineText)] 
    public string Text { get; set; } 
    public ICollection<ProjectSummaryVote> ProjectSummaryVote { get; set; } 
} 
public class ProjectSummaryVote 
{ 
    public int ProjectSummaryVoteID { get; set; } 
    public int ProjectDocID { get; set; } 
    public bool Vote { get; set; } 
    public virtual Summary Summary { get; set; } 
    public virtual User User { get; set; } 
} 

查詢:

Project project = db.Projects 
      .Include(i => i.User) 
      .Include(i => i.ProjectDoc) 
      .SingleOrDefault(x => x.ProjectID == id); 

嘗試獲取拋出一個錯誤計數。

var trueCount = Model.ProjectDoc.OfType<Literrater.Models.Summary>() 
     .Where(s => s.Status == "Active") 
     .SelectMany(v => v.ProjectSummaryVote.Where(s => s.Vote == true)) 
     .Count(); 
+0

你願意分享這個錯誤嗎? – Jacco

+0

錯誤只是「值不能爲空」。它沒有連接ProjectSummaryVote記錄。摘要有三張選票。不知道如何解決它。 –

+0

Literrater.Models.Summary的外觀如何? –

回答

0

我改造了數據,所有的選票現在都是單個投票模型的一部分。這使我可以將投票關係從派生模型中移出,並移入主模型,然後使訪問數據變得容易。