我正在使用EF Core与SQL Server进行接口。假设我将一个新的可为空的属性添加到现有实体(即,将一个新的可为空的列添加到现有表)。如何进行迁移以将表中现有行中新添加的列设置为默认的非空值?
假设我int?
向模型添加了一个属性。在脚手架迁移代码中,我可以添加一个defaultValue
参数,如下所示:
migrationBuilder.AddColumn<int?>(
name: "MyNullableInt",
table: "MyTable",
nullable: true,
defaultValue: 0); // Manually added this argument
但是,正如本SO帖子所述,
请记住,如果该列可为空,则null将是用于现有行的值
而且,实际上,一个简单的实验表明,新添加的列在数据库中的现有行中的值为NULL。
您可以在迁移期间调用自定义SQL:
migrationBuilder.AddColumn<int?>(...)
migrationBuilder.Sql("UPDATE [dbo].[MyTable] SET [MyNullableInt] = 0");
请注意:此代码和查询未经测试!对其进行适当修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句