11

コメントの提案ごとに新しい状況で編集:

現在、私はこのマッピングを持っています

public ShowMap() {
        ToTable("Shows");
        HasKey(x => x.ShowID);

        Property(x => x.ShowID)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
            .IsRequired()
            .HasColumnName("ShowID");
}

public EpisodeMap() {
        ToTable("Episodes");
        HasKey(x => x.EpisodeID);

        Property(x => x.EpisodeID)
        .IsRequired()
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
        .HasColumnName("EpisodeID");

        Property(x => x.ShowID)
            .IsRequired()
            .HasColumnName("ShowID");

        Property(x => x.EpisodeNumber)
            .IsRequired()
            .HasColumnName("EpisodeNumber");
}

これにより、次のデータベースが作成されます。

エピソード

ショー

ただし、シード メソッドを実行すると、このエラーが発生します。コマンド ライン コマンドから変数の値をデバッグできないためUpdate-Database(少なくとも、私が知る限りではありません)、プロパティが保持しているものを確認できません。

1 つ以上のエンティティの検証に失敗しました。詳細については、「EntityValidationErrors」プロパティを参照してください。

関係をマッピングに追加すると、次のエラーが表示されます。

モデルの生成中に 1 つ以上の検証エラーが検出されました:

System.Data.Entity.Edm.EdmAssociationEnd: : 関係 'Episode_Show' のロール 'Episode_Show_Source' では多重度が無効です。依存ロールはキー プロパティを参照するため、依存ロールの多重度の上限は '1' でなければなりません。

関係:

        HasRequired(x => x.Show)
            .WithMany(x => x.Episodes)
            .HasForeignKey(x => x.EpisodeID);

これはモデルです:

public class Episode {
  public int EpisodeID {get; set;}
  public int ShowID {get; set;}
  public int EpisodeNumber {get; set;}
  public virtual Show Show { get; set; }
}

public class Show {
  public int ShowID {get; set;}
  public virtual ICollection<Episode> Episodes { get; set; }
}

検証エラーの原因となる見落としは何ですか?

編集:何も忘れていないことを確認するために、これはgithubのプロジェクトです。

4

1 に答える 1