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

use*_*299 7 .net sql migration ef-code-first

对于第一次迁移进行编码我有点新意,这让我很头疼......

基本上,我正在尝试创建一个新的价值表(在我的例子中'品种').我想在另一个表'Dogs'中添加一个包含BreedId的列,不能为null并且具有默认值.

经过很多努力,我最终得到了下面的代码.(它不喜欢添加外键所以我不得不评论一下).

CreateTable(
            "dbo.Breeds",
            c => new
            {
                Id = c.Int(nullable: false, identity: true),
                Name = c.String(nullable: false),
            })
            .PrimaryKey(t => t.Id);


Sql("SET IDENTITY_INSERT [dbo].[Breeds] ON");
Sql("INSERT into [dbo].[Breeds] ([Id], [Name]) VALUES ('1', 'Long Hair')");
Sql("SET IDENTITY_INSERT [dbo].[Breeds] OFF");

AddColumn("dbo.Dogs", "BreedId", c => c.Int(nullable: false, defaultValue: '1'));
//AddForeignKey("dbo.Dogs", "BreedId", "dbo.Breeds", "Id");
CreateIndex("dbo.Dogs", "BreedId");
Run Code Online (Sandbox Code Playgroud)

但是在运行Update-Database之后,结果是:

ALTER TABLE [dbo].[Dogs] ADD [BreedId] [int] NOT NULL DEFAULT 49
CREATE INDEX [IX_BreedId] ON [dbo].[Dogs]([BreedId])
Run Code Online (Sandbox Code Playgroud)

如您所见,默认值已变为'49'而不是'1',我不知道为什么.任何人都可以看到我出错的地方,还是有更简单的方法来实现我想要做的事情?

谢谢!

use*_*299 8

发布回答感谢Scotch,删除了引号然后正确设置了默认值.像这样:

AddColumn("dbo.Dogs","BreedId",c => c.Int(nullable:false,defaultValue:1));