首页 文章

使用Entity Framework更新数据库迁移时,一个或多个实体的验证失败

提问于
浏览
2

当我在迁移步骤中尝试 update-database 时出现以下错误(打开包管理器控制台窗口并输入"update-database"命令)

System.Data.Entity.Validation.DbEntityValidationException:一个或多个实体的验证失败 . 有关详细信息,请参阅“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");
}

当我删除这两个字段并更新数据库时,种子方法成功运行

有什么建议?

谢谢 .

1 回答

  • 0

    对于NumberofWatches,种子方法是否包含零值?这是一个不可为空的int,您需要在种子处提供零(或其他整数值) . 类似地,ReleaseDate将需要每个电影种子对象的日期值,因为它也是不可空的 .

相关问题