1

我有以下模型(简化)

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

2 回答 2

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时显式包含FaultComments.User.

于 2013-04-13T11:49:07.457 回答
0

Slauma 答案的功能性 VB.NET 版本:

var faultsWithComments = _context.Fault.Include(
   function (f) f.FaultComments.Select(
      function (fc) fc.User
   )
)
于 2015-01-22T21:25:46.907 回答