我对代码首次迁移有点陌生,这让我很头疼......
基本上,我正在尝试创建一个新的值表(在我的示例中为“品种”)。我想在另一个包含 BreedId 的表“Dogs”中添加一列,不能为空并且具有默认值。
经过很多麻烦,我最终得到了下面的代码。(它不喜欢添加外键,所以我不得不评论一下)。
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");
但是运行 Update-Database 后,结果是:
ALTER TABLE [dbo].[Dogs] ADD [BreedId] [int] NOT NULL DEFAULT 49
CREATE INDEX [IX_BreedId] ON [dbo].[Dogs]([BreedId])
如您所见,默认值已变为“49”而不是“1”,我不知道为什么。谁能看到我哪里出错了,或者有没有更简单的方法来实现我想要做的事情?
谢谢!