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

时间:2013-03-01 18:01:32

标签: c# entity-framework exception-handling ef-code-first

设置卡片和套装。这是我在我的模型中使用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; }
}

然后换卡片:

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'的关系。多个添加的实体   可能有相同的主键。

知道为什么吗?

2 个答案:

答案 0 :(得分:1)

对我来说,在Set实体中有这个没有意义。它不能自称并且是必需的

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

如果SetSets列表,您如何创建第一个Set

请注意,根据错误中的内容,它与Card类

无关

答案 1 :(得分:0)

如果您只是试图避免空错误使新实例化的Set没有Sets,那么处理此问题的正确方法是在构造函数中实例化Sets

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

    ...
}