C# 默认值在实体框架代码首次迁移中不起作用

C# 默认值在实体框架代码首次迁移中不起作用,c#,.net,entity-framework,ef-code-first,entity-framework-migrations,C#,.net,Entity Framework,Ef Code First,Entity Framework Migrations,我偶然发现了一个相关的问题,至今还没有找到任何答案。当我尝试在使用时添加或更改列并为此列设置默认值时,我可以使用and/or参数 MSDN官方文档中写道: 获取或设置用作此列默认值的常量值 获取或设置用作此列默认值的SQL表达式 由于stackoverflow上不同的默认值相关问题使用不同的方法,有人能告诉我何时使用其中一种方法吗 对于我的特定用例,我想为我的数据库列设置一个常量值4,如下所示: public override void Up() { this.AddColumn("

我偶然发现了一个相关的问题,至今还没有找到任何答案。当我尝试在使用时添加或更改列并为此列设置默认值时,我可以使用and/or参数

MSDN官方文档中写道:

获取或设置用作此列默认值的常量值

获取或设置用作此列默认值的SQL表达式

由于stackoverflow上不同的默认值相关问题使用不同的方法,有人能告诉我何时使用其中一种方法吗

对于我的特定用例,我想为我的数据库列设置一个常量值4,如下所示:

public override void Up()
{
    this.AddColumn("dbo.Foo", "Bar", c => c.Int(nullable: false, defaultValue: 4));
}
其结果如下:


虽然这看起来绝对正确,但所有数据行的值都设置为零 将新列添加到现有表时,不会为现有记录追溯添加默认值


您可以使用
addmigration RunSqlScript
添加新的迁移步骤,并使用自定义Sql更新新列中的值

它不会添加默认值,请尝试插入新值record@VidmantasBlazevicius我再次编辑了我的问题-我不认为Seed是在迁移步骤中执行的-它只是在您创建新数据库时执行的。您可以使用
add migration RunSqlScript
添加迁移,然后添加自定义sql以更新某些内容。@VidmantasBlazevicius奇怪的是,每次应用程序启动时都会调用seed方法:-/I尝试一下您的想法,提前谢谢!看起来我们都是对的-有两个
Seed
方法-一个每次都被调用,另一个只在db初始化时被调用。我仍然会使用
添加迁移
,以满足您的需要。()