Asp.net mvc 使用实体框架更新数据库迁移时,一个或多个实体的验证失败
在迁移步骤中尝试更新数据库时,出现以下错误(打开PackageManager控制台窗口并输入“更新数据库”命令) System.Data.Entity.Validation.DbEntityValidationException:验证 一个或多个实体失败。请参阅“EntityValidationErrors”属性 更多细节 我在Asp.net mvc 使用实体框架更新数据库迁移时,一个或多个实体的验证失败,asp.net-mvc,entity-framework,entity-framework-4,ef-code-first,Asp.net Mvc,Entity Framework,Entity Framework 4,Ef Code First,在迁移步骤中尝试更新数据库时,出现以下错误(打开PackageManager控制台窗口并输入“更新数据库”命令) System.Data.Entity.Validation.DbEntityValidationException:验证 一个或多个实体失败。请参阅“EntityValidationErrors”属性 更多细节 我在电影类中添加了新字段 public class Movie { public int ID { get; set; } [Required
电影
类中添加了新字段
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; }
}
新字段的addmigration类包含这个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");
}
当我删除这两个字段并更新数据库时,seed方法将成功运行
有什么建议吗
谢谢。种子方法是否包含NumberofWatches的零值?这是一个不可为null的int,您需要在种子处提供一个零(或其他整数值)。
同样,ReleaseDate在每个电影种子对象上都需要一个日期值,因为它也是不可为空的。是否要添加可为空的值?即一个可为null的int和一个可为null的DateTime?添加标准的不可为null的值仍然会导致抛出错误。如果您使用实体框架,您可以在上查看我的答案。希望这有助于。。。