2

移行手順を実行しようとすると、次のエラーが発生しupdate-databaseます (パッケージ マネージャー コンソール ウィンドウを開き、「update-database」コマンドを入力します)。

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

Movieクラスに新しいフィールドを追加します

public class Movie
{
        public int ID { get; set; }
        [Required]
        [DisplayName("Name")]
        public string MovieName { get; set; }
        [Required]
        [DisplayName("Type")]
        public string MovieType { get; set; }
        [DisplayName("Year")]
        public int MovieProductionYear { get; set; }
        [Range(1, 5)]
        [DisplayName("Priority")]
        public int priority { get; set; }
        [DisplayName("NoOfWatches")]
        public int NumberOfWatches { get; set; }
        [DisplayName("isWatched")]
        public bool isWatched { get; set; }
        [Range(1, 10)]
        [DisplayName("IMDB")]
        public int IMDBRating { get; set; }
        [DisplayName("Available")]
        public bool Availability { get; set; }
        [StringLength(50)]
        [DisplayName("Comments")]
        public string Comments { get; set; }
        [DisplayName("Actor")]
        public string Actor { get; set; }
        [DataType(DataType.Date)]
        public DateTime ReleasedDate { get; set; }
    }

新しいフィールドの add migration クラスには、この up メソッドと down メソッドが含まれています

public override void Up()
{
    AddColumn("dbo.Movies", "NumberOfWatches", c => c.Int(nullable: false));
    AddColumn("dbo.Movies", "ReleasedDate", c => c.DateTime(nullable: false));
}

public override void Down()
{
    DropColumn("dbo.Movies", "ReleasedDate");
    DropColumn("dbo.Movies", "NumberOfWatches");
}

2 つのフィールドを削除してデータベースを更新すると、シード メソッドが正常に実行されます

助言がありますか?

ありがとうございました。

4

1 に答える 1

1

シードメソッドには、NumberofWatchesのゼロの値が含まれていますか?これはnull許容でないintであり、シードにゼロ(または他の整数値)を指定する必要があります。同様に、ReleaseDateもnull許容ではないため、各ムービーシードオブジェクトに日付値が必要になります。

于 2012-11-25T07:14:14.407 に答える