第一次迁移:如何为新的属性设置默认值?
我正在使用EF6在我的数据库中存储report
类的实例。 该数据库已经包含数据。 假设我想添加一个属性来report
,
public class report {
// ... some previous properties
// ... new property:
public string newProperty{ get; set; }
}
现在,如果我去包管理器控制台并执行
add-migration Report-added-newProperty
update-database
我将在'/ Migrations'文件夹中为文件添加一个newProperty
列到表中。 这工作正常。 但是,在数据库中较旧的条目中, newProperty
的值现在是一个空字符串。 但我希望它是,例如,“老”。
所以我的问题是:如何为迁移脚本(或其他地方)中的新属性(任何类型)设置默认值?
如果您看到生成的迁移代码,您将看到AddColumn
AddColumn("dbo.report", "newProperty", c => c.String(nullable: false));
您可以添加defaultValue
AddColumn("dbo.report", "newProperty",
c => c.String(nullable: false, defaultValue: "old"));
或者添加defaultValueSql
AddColumn("dbo.report", "newProperty",
c => c.String(nullable: false, defaultValueSql: "GETDATE()"));
您必须在您的迁移脚本中更改行,并添加属性/列,如下所示:
AddColumn("dbo.reports", "newProperty", c => c.String(nullable: false, defaultValue: "test"));
我发现只要在实体属性上使用Auto-Property Initializer就足以完成工作。
例如:
public class Thing {
public bool IsBigThing { get; set; } = false;
}
链接地址: http://www.djcxy.com/p/24711.html
上一篇: first migration: How to set default value for new property?