我有一个旧数据库的备份文件,我没有使用过EF。现在我创建一个新的数据库,使用EF代码,第一个流畅的api,每个层次表。这就是为什么我有一个不可空的鉴别列。在我的备份文件中没有鉴别器。因此,当我尝试恢复旧的备份文件时,由于尝试在鉴别器列中插入NULL值而引发异常。
在将鉴别器列插入NULL时,是否可以设置默认值(借助EF)?
编辑: 恢复是在数据集的帮助下完成的。我可以将值添加到数据集中,但我不想这样做。
答案 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字段中设置正确的类型。