EF Core ICollection 不包含 'Include' 的定义

EF Core ICollection does not contain a definition for 'Include'

我有一个头部模型和一个细节模型,它们之间有导航属性。我想获得包含详细信息的头部记录。这工作正常,但我得到的详细记录不包含我需要的所有属性,所以我尝试添加 Include()。

EF Core 说 ICollection<RequestDetail> does not contain a definition for 'Include'。我已经尝试过使用 List<> 导航类型,Microsoft.EntityFrameworkCoreSystem.Linq 都在我的使用范围内。

我的模特:

public class RequestHead
{
    public string Id { get; set; }
    public DateTime CreateDate { get; set; }
    public int CreateUserId { get; set; }
    [ForeignKey("CreateUserId")]
    public User CreateUser { get; set; }

    public virtual ICollection<RequestDetail> Details { get; set; }
}
public class RequestDetail
{
    [Key]
    public int Id { get; set; }

    public string RequestHeadId { get; set; }        
    [ForeignKey("RequestHeadId")]
    public RequestHead RequestHead { get; set; }

    public DateTime CreateDate { get; set; }
    public int CreateUserId { get; set; }
    [ForeignKey("CreateUserId")]
    public User CreateUser { get; set; }
}

Select:

 var requests = (from r in _ctx.RequestHeads
                select new RequestDTO {
                    AcceptDate = r.AcceptDate,
                    AcceptUser = r.AcceptUser,
                    AcceptUserId = r.AcceptUserId,
                    Details = r.Details != null ? 
 r.Details.Include(x => x.BuyerUser).Select(x => new 
 RequestDetailDTO(x, x.Attachments.ToArray(), x.Product)).ToArray() : null});

更新#1:

这不是 Json.ReferenceLoopHandling 问题。它已经在 startup.cs 中被忽略了,我的问题是我不能在我的代码中使用 Include() 而不仅仅是在 json.

中没有必要的属性

如果在 .NET 上开发 - 确保您使用的是 System.Data.Entity 命名空间。

using System.Data.Entity;

如果在 .NET Core 上 - 请改用 Microsoft.EntityFrameworkCore。

using Microsoft.EntityFrameworkCore;

就像错误提示的那样:你的属性 r.Details是一个ICollection(一个导航属性)并且没有暴露一个.Include()方法,它只适用于IQueryables(扩展方法)。包含路径应​​从返回的 IQueryable 指向您希望包含的导航属性,在您的情况下,这应该类似于

.Include(x=>x.Details.Select(y=>y.BuyerUser))