我使用 Entity Framework 5.0 和电动工具对一个小型数据库进行了逆向工程。然后我开始开发一个网站。我遇到了一个问题,因为我忘记将我的一张表上的 ID 列设置为 IDENTITY 列。
所以我添加了一个代码优先迁移,并在包管理器控制台中使用 update-database 命令运行它。这是我写的“向上”方法:
public override void Up()
{
Sql("DELETE FROM dbo.Sections");
Sql("DELETE FROM dbo.QuestionInstances");
DropForeignKey("dbo.SectionInstances", "SectionID", "dbo.Sections");
DropForeignKey("dbo.QuestionInstances", "SectionID", "dbo.Sections");
DropTable("dbo.Sections");
CreateTable(
"dbo.Sections",
c => new
{
ID = c.Int(nullable: false, identity: true),
UniqueDescription = c.String(nullable: false, maxLength: 50),
Heading = c.String(maxLength: 500),
})
.PrimaryKey(t => t.ID);
AddForeignKey("dbo.SectionInstances", "SectionID", "dbo.Sections");
AddForeignKey("dbo.QuestionInstances", "SectionID", "dbo.Sections");
}
我检查了数据库,它已成功更改。
我期待实体框架更新其模型并停止显式设置 ID,但看起来我错了,因为当我尝试保存时,我现在收到此错误:“无法在表 'Sections' 中插入标识列的显式值”当 IDENTITY_INSERT 设置为 OFF”
如何让实体框架识别该列现在是一个标识列?