2013-04-13 82 views
1

我有以下的模型(簡體)使用多個LINQ「包含」獲得第二屆深度數據

public partial class Fault 
{ 
    public int FaultID { get; set; } 
    ... 
    public virtual ICollection<FaultComment> FaultComments { get; set; } 
    public virtual User FaultCreatorUser { get; set; } 
} 

public partial class FaultComment 
{ 
    public int CommentID { get; set; } 
    public int FaultID { get; set; } 
    public string CommentContent { get; set; } 
    public Nullable<System.DateTime> CommentCreationDate { get; set; } 
    public int CommentCreatorUserID { get; set; } 
    public bool IsDeleted { get; set; } 

    public virtual User User { get; set; } 
    public virtual Fault Fault { get; set; } 
} 

所以存在故障。它有一個導航屬性來獲取的意見收集故障並且每個推薦對於創建該評論的用戶具有導航屬性。

是否可以創建一個LINQ語句來檢索錯誤的所有評論和評論的用戶信息?

var faultsWithComments = _context.Fault.Include("FaultComments").include("???FaultComments>>User???") 

回答

4
var faultsWithComments = _context.Fault.Include("FaultComments.User"); 

或者與EF> = 4.1,你可以使用強類型版本:

var faultsWithComments = _context.Fault 
    .Include(f => f.FaultComments.Select(fc => fc.User)); 

(你在你的代碼文件需要using System.Data.Entity;Include擴展方法可用,接受lambda表達式作爲參數。)

EF將在指定的導航路徑中包含所有相關實體,因此,在包含FaultComments.User時,不需要明確包含FaultComments

+0

證實,這部作品在EF6 –

0

功能VB.NET版本Slauma的回答:

var faultsWithComments = _context.Fault.Include(
    function (f) f.FaultComments.Select(
     function (fc) fc.User 
    ) 
)