Sql 如何在代码优先迁移期间设置新表列的默认值?

Sql 如何在代码优先迁移期间设置新表列的默认值?,sql,.net,ef-code-first,migration,Sql,.net,Ef Code First,Migration,我对代码先行迁移有点陌生,这让我很头疼 基本上,我正在尝试创建一个新的值表(在我的示例中是“品种”)。我想在另一个表“Dogs”中添加一列,该表包含一个值,不能为null,并且具有默认值 经过大量的伪造,我得到了下面的代码。(它不喜欢添加外键,所以我不得不对此进行注释) 但运行更新数据库后,结果是: ALTER TABLE [dbo].[Dogs] ADD [BreedId] [int] NOT NULL DEFAULT 49 CREATE INDEX [IX_BreedId] ON [dbo]

我对代码先行迁移有点陌生,这让我很头疼

基本上,我正在尝试创建一个新的值表(在我的示例中是“品种”)。我想在另一个表“Dogs”中添加一列,该表包含一个值,不能为null,并且具有默认值

经过大量的伪造,我得到了下面的代码。(它不喜欢添加外键,所以我不得不对此进行注释)

但运行更新数据库后,结果是:

ALTER TABLE [dbo].[Dogs] ADD [BreedId] [int] NOT NULL DEFAULT 49
CREATE INDEX [IX_BreedId] ON [dbo].[Dogs]([BreedId])
正如你所看到的,默认值变成了'49'而不是'1',我不知道为什么。 有人能看出我哪里做错了,或者有没有更简单的方法来实现我的目标


谢谢

由于Scotch的原因,发布了答案,删除了引号,然后正确设置了默认值。 像这样:


AddColumn(“dbo.Dogs”,“BreedId”,c=>c.Int(可空:false,默认值:1))

当它将“1”转换成整数1时,可能会发生一些奇怪的事情,而它会自动这样做吗?你有没有试过用整数1来代替“1”,看看它是否有区别?啊,是的,就是这样!删除了引号,一切都很好(一定是漫长的一天…)。非常感谢。
ALTER TABLE [dbo].[Dogs] ADD [BreedId] [int] NOT NULL DEFAULT 49
CREATE INDEX [IX_BreedId] ON [dbo].[Dogs]([BreedId])