来自Backupfile的EF6 code-first Discriminator

时间:2014-08-20 12:28:08

标签: entity-framework ef-code-first database-restore table-per-hierarchy discriminator

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用EF创建数据库。然后运行以下SQL命令:

context.Database.ExecuteSqlCommand("ALTER Table dbo.TABLENAME DROP COLUMN Discriminator");

之后您可以运行还原。最后,您手动添加Discriminator:

context.Database.ExecuteSqlCommand("ALTER Table dbo. TABLENAME ADD
Discriminator NVARCHAR(128) NOT NULL DEFAULT 'ClassName'");

如果你有多种类型的表格,那么你可能需要进行某种后处理,以便在Discriminator字段中设置正确的类型。

相关问题