私のモデルの1つにASP.NET MVC applicationのデータアノテーションを追加しました。[Required]
次のエラーでUpdate-Database
コマンドの結果を実行し、移行を作成した後:Entity Frameworkの移行で必須フィールドの既定値?
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
列にNULLを持つ一部のレコードが原因です。これらの値を自動的にデフォルト(「John Doe」)ディレクターに変更することはできますか?ここで
は私のモデルである:
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());
}
}
私もそう思ったが、それは既存のレコードのための作業を思えません。だから私はまだエラーが発生します。 – drozzy
@drozzy多分バグかもしれません:[EF 4.3.1 Migration Exception - AlterColumn defaultValueSqlは異なるテーブルに対して同じデフォルトの制約名を作成します。](http://stackoverflow.com/questions/9830216/ef-4-3-1 -migration-exception-altercolumn-defaultvaluesql-creates-same-default /)クエリによって 'IS NULL'チェックで行を更新することができます。 – webdeveloper
面白いですが、私は彼らが何を話しているのか分かりません。しかし、これがバグであれば、それは意味をなさないでしょう。 – drozzy