Sql server 如何使用Entity Framework 6代码优先迁移创建初始数据行并将其添加到新表中

Sql server 如何使用Entity Framework 6代码优先迁移创建初始数据行并将其添加到新表中,sql-server,entity-framework,code-first,entity-framework-migrations,Sql Server,Entity Framework,Code First,Entity Framework Migrations,使用Entity Framework 6 Code First迁移时,我需要向数据库中添加一个新表,然后向现有表中的新表添加一个外键(其中包含大量数据) 由于现有表中已经有大量数据,并且新表的FK将不为NULL,因此我需要能够向新表中添加一行,然后将此行中的键(标识)添加到“old”表中的所有现有行中,然后将其设置为非NULL 是否有一种方法可以在代码中执行此操作,以便每次使用updatedatabase命令时都能执行此操作,还是必须手动更改genratedsql脚本 现有表/类的名称为:Cer

使用Entity Framework 6 Code First迁移时,我需要向数据库中添加一个新表,然后向现有表中的新表添加一个外键(其中包含大量数据)

由于现有表中已经有大量数据,并且新表的FK将不为NULL,因此我需要能够向新表中添加一行,然后将此行中的键(标识)添加到“old”表中的所有现有行中,然后将其设置为非NULL

是否有一种方法可以在代码中执行此操作,以便每次使用updatedatabase命令时都能执行此操作,还是必须手动更改genratedsql脚本

现有表/类的名称为:Certificate 新表/类的名称为:CertificateRegistry 关系是CertificateRegistry(一个)-->Certificate(多个)。 证书中的新列将是CertificateRegistryId,作为非空外键

澄清一下:表和关系的创建不是问题,而是我如何通过代码将行添加到新表中,然后使用生成的标识更新旧表中的现有行


我试图寻找答案,但没有运气,所以如果你认为这是一个重复,请张贴一个链接到答案

必须将新外键创建为可为null的列,然后运行sql更新值,然后将该列更改为不可为null

使用不可为null的键->添加迁移->通过将可为null的值从true更改为false来更改
AddColumn
语句->添加
Sql(“”)
->添加
AlterColumn
语句,从而创建模型

迁移中的代码应该包括以下内容:

AddColumn("dbo.Foos", "NewForeignKey", c => c.Int(nullable: true));

Sql("Update dbo.Foos set NewForeignKey = ...");

AlterColumn("dbo.Foos", "NewForeignKey", c => c.Int(nullable: false));

谢谢但是到那时PrimaryKey表中将没有任何数据,因此更新将失败。但也许我也可以使用Sql()方法向PrimaryKey表插入一个值?如果是,是否有办法同时将“set identity_insert”值设置为ON?Sql()是否允许批处理查询?