1

我有一个未使用过 EF 的旧数据库的备份文件。现在我使用 EF 代码创建一个新的数据库,首先使用流利的 api,每个层次都有一个表。这就是为什么我有一个不可为空的鉴别器列。在我的备份文件中没有鉴别器。因此,当我尝试恢复旧的备份文件时,由于尝试将 NULL 值插入鉴别器列而引发异常。

将 NULL 插入鉴别器列时是否可以设置默认值(在 EF 的帮助下)?

编辑:恢复是在数据集的帮助下完成的。我可以将值添加到数据集中,但我不想那样做。

4

1 回答 1

1

您可以使用 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 字段中设置正确的类型。

于 2014-08-21T10:52:40.380 回答