我有一个未使用过 EF 的旧数据库的备份文件。现在我使用 EF 代码创建一个新的数据库,首先使用流利的 api,每个层次都有一个表。这就是为什么我有一个不可为空的鉴别器列。在我的备份文件中没有鉴别器。因此,当我尝试恢复旧的备份文件时,由于尝试将 NULL 值插入鉴别器列而引发异常。
将 NULL 插入鉴别器列时是否可以设置默认值(在 EF 的帮助下)?
编辑:恢复是在数据集的帮助下完成的。我可以将值添加到数据集中,但我不想那样做。
我有一个未使用过 EF 的旧数据库的备份文件。现在我使用 EF 代码创建一个新的数据库,首先使用流利的 api,每个层次都有一个表。这就是为什么我有一个不可为空的鉴别器列。在我的备份文件中没有鉴别器。因此,当我尝试恢复旧的备份文件时,由于尝试将 NULL 值插入鉴别器列而引发异常。
将 NULL 插入鉴别器列时是否可以设置默认值(在 EF 的帮助下)?
编辑:恢复是在数据集的帮助下完成的。我可以将值添加到数据集中,但我不想那样做。
您可以使用 EF 创建数据库。然后运行以下 SQL 命令:
context.Database.ExecuteSqlCommand("ALTER Table dbo.TABLENAME DROP COLUMN Discriminator");
之后,您可以运行还原。最后手动添加鉴别器:
context.Database.ExecuteSqlCommand("ALTER Table dbo. TABLENAME ADD
Discriminator NVARCHAR(128) NOT NULL DEFAULT 'ClassName'");
如果您的 Table Per Hierachy 具有多种类型,那么您可能需要某种后处理来在 Discriminator 字段中设置正确的类型。