无法确定关系的主要结束-多个添加的实体可能具有相同的主键

本文关键字:实体 关系 结束 无法确定 添加 | 更新日期: 2023-09-27 18:01:58

集合有卡片和集合。以下是我在模型中使用EF Code First的内容:

public class Set
{
    // Primitive Properties 
    [Required]
    [Key]
    public virtual int SetId { get; set; }
    // Navigation Properties 
    [Required]
    public virtual List<Set> Sets { get; set; }
    // Navigation Properties
    [ForeignKey("ParentSet")]
    public int ParentSetId { get; set; }
    public virtual Set ParentSet { get; set; }
}

Then for Cards:

public class Card
{
    // Primitive Properties
    [Required]
    [Key]
    public virtual int CardId { get; set; }
    // Navigation Properties
    [Required]
    [ForeignKey("ParentSet")]
    public int ParentSetId { get; set; }
    public virtual Set ParentSet { get; set; }
}

我正在尝试从包管理器控制台使用'update-database'重建数据库,这是我得到的错误:

无法确定的主端"App.Core。Set_ParentSet"关系。多个添加的实体可以有相同的主键。

知道为什么吗?

无法确定关系的主要结束-多个添加的实体可能具有相同的主键

对我来说,在Set实体中有这个是没有意义的。它不能引用自己,也不能被要求

// Navigation Properties 
[Required]
public virtual List<Set> Sets { get; set; }

如果Set必须有Sets的列表,如何创建第一个Set ?

请注意,从错误中所写的内容来看,它与Card类无关

如果您只是想避免null错误,因为新实例化的Set没有Sets,那么处理这个问题的正确方法是在构造函数中实例化Sets:

public class Set
{
    public Set()
    {
        Sets = new List<Set>();
    }
    ...
}