簡體   English   中英

EF Core ICollection不包含“包含”的定義

[英]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; }
}

選擇:

 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中已經被忽略,我的問題是,即使在我的代碼中,我不僅不能在json中沒有必要的屬性,也無法使用Include()。

就像錯誤提示一樣:您的屬性r.Details是ICollection(導航屬性),並且不公開.Include()方法,該方法僅可用於IQueryables(擴展方法)。 包含路徑應​​從返回的IQueryable指向您希望包含的導航屬性,在您的情況下,該內容應類似於

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

如果在.NET上進行開發-請確保您使用的是System.Data.Entity命名空間。

using System.Data.Entity;

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

using Microsoft.EntityFrameworkCore;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM