-1

套装有卡片和套装。这是我的模型中的内容,使用 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”关系的主体端。多个添加的实体可能具有相同的主键。

知道为什么吗?

4

2 回答 2

1

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

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

如果一个SetHAS要有一个列表Sets,你怎么能创建第一个 Set

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

于 2013-03-01T18:15:07.457 回答
0

如果您只是想避免Set使用 no新实例化的 null 错误Sets,那么处理此问题的正确方法是Sets在构造函数中实例化:

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

    ...
}
于 2013-03-01T19:20:08.457 回答