He agregado la anotación de datos [Required]
a uno de mis modelos en un ASP.NET MVC application. Después de la creación de una migración, corriendo los Update-Database
resultados de los comandos en el siguiente error:Valor predeterminado para los campos obligatorios en las migraciones de 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.
Esto se debe a algunos registros que tienen NULL en sus Director
columnas. ¿Cómo puedo cambiar automáticamente esos valores a algún director predeterminado (por ejemplo, "John Doe")?
Aquí es mi modelo:
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; }
}
y aquí está mi última migración:
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());
}
}
Yo pensaba lo mismo, pero eso no parece trabajo para los registros existentes. Entonces sigo recibiendo un error. – drozzy
@drozzy Tal vez sea un error, como aquí: [EF 4.3.1 Excepción de migración - AlterColumn defaultValueSql crea el mismo nombre de restricción predeterminado para diferentes tablas] (http://stackoverflow.com/questions/9830216/ef-4-3-1 -migration-exception-altercolumn-defaultvaluesql-creates-same-default /) Puede actualizar las filas con la verificación 'IS NULL' por su consulta. – webdeveloper
Interesante, pero no estoy seguro de entender de lo que están hablando. Sin embargo, si esto es un error, entonces sí, tendría sentido. – drozzy