如何使用 Entity Framework 6 Code First 迁移创建初始数据行并将其添加到新的 table

How to create and add initial data row to new table using Entity Framework 6 Code First migrations

使用 Entity Framework 6 Code First 迁移,我需要向数据库添加一个新的 table,然后在现有的 table(里面有很多数据)。

由于现有的 table 中已经有很多数据,并且新的 table 的 FK 将为 NOT NULL,我需要能够向新的 table 然后将此行中的键(身份)添加到 "old" table 中的所有现有行,然后再设为 NOT NULL。

有没有办法在代码中执行此操作,以便每次使用 Update-Database 命令时都会执行,或者我是否必须手动更改生成的 SQL-脚本?

现有的table/class被命名为:证书 新的 table/class 被命名为:CertificateRegistry 关系是CertificateRegistry(One)-->Certificate(many)。 Certificate 中的新列将是 CertificateRegistryId 作为 NOT NULL 外键。

澄清一下:table 和关系的创建不是问题,但我如何通过代码向新的 table 添加一行,然后更新旧的现有行table 使用生成的身份。

我曾尝试搜索此问题的答案,但没有成功,所以如果您认为这是重复的,请 post 回复 link。

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

使用不可为 null 的键创建模型 -> 添加迁移 -> 通过将 nullable 从 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));