-1

セットにはカードとセットがあります。EFコードファーストを使用して、モデルにあるものは次のとおりです。

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; }

のリストが必要な場合、最初SetのリストをSetsどのように作成できます Setか?

エラーに書かれていることから、それはカードクラスとは何の関係もないことに注意してください

于 2013-03-01T18:15:07.457 に答える
0

Setnullエラーがなしで新しくインスタンス化されるのを回避しようとしている場合、Setsこれを処理する適切な方法はSets、コンストラクターでインスタンス化することです。

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

    ...
}
于 2013-03-01T19:20:08.457 に答える