簡體   English   中英

如何使用Entity Framework Core 2.0為X實體創建鏈接的X實體

[英]How do I create linked X entities for a X entity using Entity Framework Core 2.0

我想創建一個Product實體,該實體可以將Products列表作為LinkedProducts,但是我不知道為什么我的代碼不起作用。 我是學生,並且是EF核心映射的新手。
我創建了2個實體類Product.cs和ProductLink.cs,這是我的類

Product.cs

    public class Product : Content
    {
        public virtual string Description { get; set; }

        public virtual Guid? ThumbnailImageId { get; set; }

        [ForeignKey("ThumbnailImageId")]
        public virtual Media ThumbnailImage { get; set; }

        public virtual List<ProductLink> ProductLinks { get; set; } = new List<ProductLink>();
    }

ProductLink.cs

    public class ProductLink : EntityBase
    {
        [ForeignKey("ProductId")]
        public virtual Product Product { get; set; }

        public virtual Guid? ProductId { get; set; }

        [ForeignKey("LinkedProductId")]
        public virtual Product LinkedProduct { get; set; }

        public virtual Guid? LinkedProductId { get; set; }
    }

錯誤:

無法確定由“列表”類型的導航屬性“產品。產品鏈接”表示的關系。 手動配置關系,或者使用“ [NotMapped]”屬性或通過“ OnModelCreating”中的“ EntityTypeBuilder.Ignore”忽略此屬性。

您通過ProductLink.ProductProductLink.LinkedProduct引用導航屬性具有兩個關系,但是只有一個集合導航屬性Product.ProductLinks ,因此EF不知道如何映射它們。

所需的最小更改是將ProductLinks映射到兩個相關屬性之一,例如使用InverseProperty屬性:

[InverseProperty("Product")]
public virtual List<ProductLink> ProductLinks { get; set; } = new List<ProductLink>();

有關更多信息,請參見關系文檔主題。

因此,更多有關您在此處嘗試執行的操作的信息將有所幫助。 從我的角度來看,所有內容都可以像這樣合並到一個Product類中。

    public class Product : Content
    {
        public virtual string NormalizedName { get; set; }

        public virtual string ShortDescription { get; set; }

        public virtual string Description { get; set; }

        public virtual Guid? ThumbnailImageId { get; set; }

        [ForeignKey("ThumbnailImageId")]
        public virtual Media ThumbnailImage { get; set; }

        [ForeignKey("ProductId")]
        public virtual Guid? ProductId { get; set; }

        [ForeignKey("LinkId")]
        public virtual Guid? LinkId { get; set; }

        public virtual List<Product> ProductLinks { get; set; } = new List<Product>();
    }

您究竟收到什么錯誤?

暫無
暫無

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

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