实体框架迁移中必填字段的默认值? [英] Default value for Required fields in Entity Framework migrations?
问题描述
我已经在 [Required] 数据注释到我的一个模型中mvc-4 / get-started-with-aspnet-mvc4 / add-validation-to-the-modelrel =noreferrer> ASP.NET MVC应用程序。创建迁移后,运行 update-database
会出现以下错误:
I've added [Required]
data annotation to one of my models in ASP.NET MVC application. After creating a migration, running update-database
resuilts in the following error:
无法将值NULL插入列Director,表
'MOVIES_cf7bad808fa94f89afa2e5dae1161e78.dbo.Movies';列不
允许空值。 UPDATE失败。该陈述已被终止。
Cannot insert the value NULL into column 'Director', table 'MOVIES_cf7bad808fa94f89afa2e5dae1161e78.dbo.Movies'; column does not allow nulls. UPDATE fails. The statement has been terminated.
这是由于某些记录在 Director
列。如何自动将这些值自动更改为某些默认值(例如John Doe)导演?
This is due to some records having NULL in their Director
columns. How can I automatically change those values to some default (say "John Doe") director?
这是我的模型:
public class Movie
{
public int ID { get; set; }
[Required]
public string Title { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
[Required]
public string Genre { get; set; }
[Range(1,100)]
[DataType(DataType.Currency)]
public decimal Price { get; set; }
[StringLength(5)]
public string Rating { get; set; }
[Required] /// <--- NEW
public string Director { get; set; }
}
这里是我最新的迁移:
public partial class AddDataAnnotationsMig : DbMigration
{
public override void Up()
{
AlterColumn("dbo.Movies", "Title", c => c.String(nullable: false));
AlterColumn("dbo.Movies", "Genre", c => c.String(nullable: false));
AlterColumn("dbo.Movies", "Rating", c => c.String(maxLength: 5));
AlterColumn("dbo.Movies", "Director", c => c.String(nullable: false));
}
public override void Down()
{
AlterColumn("dbo.Movies", "Director", c => c.String());
AlterColumn("dbo.Movies", "Rating", c => c.String());
AlterColumn("dbo.Movies", "Genre", c => c.String());
AlterColumn("dbo.Movies", "Title", c => c.String());
}
}
推荐答案
我记得正确的是,这样的东西应该可以工作:
If I remember correctly, something like this should work:
AlterColumn("dbo.Movies", "Director", c => c.String(nullable: false, defaultValueSql: "John Doe"));
这篇关于实体框架迁移中必填字段的默认值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!