Tor*_*ene 0 c# sql asp.net-mvc database-schema ef-migrations
我想将[Required]属性添加到包含NULL值的现有数据库记录中,以及使用Code First Migrations自动生成数据库本身的位置.模型架构更新可能如下所示:
public class Product // BEFORE UPDATE
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public string Color { get; set; }
}
public class Product // AFTER UPDATE
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
[Required] // <---- Added
public string Color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我运行命令
add-migration MakeColorRequired // Runs successfully
update-database // Crashes
Run Code Online (Sandbox Code Playgroud)
后一个命令崩溃,因为它不允许将color元素已设置为NULL的现有DB条目成为必填字段,从而产生错误:
Cannot insert the value NULL into column 'Color',
table 'MySystem.dbo.Product';
column does not allow nulls.
UPDATE fails.
Run Code Online (Sandbox Code Playgroud)
有没有办法在不丢弃数据库的情况下克服这个问题?例如,能够为所有冲突记录设置新的默认值,在我的场景中运行良好,但我还没有找到任何实际的方式.
小智 5
编辑迁移以包括SQL语句,以将该字段为空的所有记录更新为新的默认值.
public override void Up()
{
Sql("UPDATE dbo.Product SET Color = '' WHERE Color IS NULL");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |