2016-09-20 179 views
1

我们使用实体框架代码优先迁移。我们运行它没有任何问题。我们正在尝试将数据从旧数据库迁移到新数据库。我们需要删除数据库,创建所有表,插入数据,然后添加主键和外键。我们希望在EF中这样做,以便我们可以格式化正在迁移的数据。我们已经成功地创建了数据库,然后将数据迁移过来,但主键在旧数据库中没有出现。我已经使用ExecuteSqlCommand一个bulkinsert受审:实体框架代码首先迁移和数据迁移

ctx.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[TableName] ON"); 

但这不起作用,因为迁移scipts有idenity设置为true:

Id = c.Int(nullable: false, identity: true), 

有没有一种方法来设置身份假数据插入到数据库后,将标识设置为true?

回答

1

你正在以正确的方式做到这一点(Id是一个身份,你启用身份插入)。 SET IDENTITY_INSERT ON仅对会话(连接)有效,因此您只需使用一个连接。
另外,您必须使用INSERT语句(而不是EF SaveChanges)对数据库进行种子处理。