我的EF数据库中有一些数据。我想在我的一个类中更改外键:
[ForeignKey("Collection")]
public int CollectionID { get; set; }
不幸的是我收到了这个错误
无法将值NULL插入列'CollectionID',表'WebLanguageTeacher1.dbo.Words';列不允许空值。更新失败。
当我尝试将新迁移添加到我的数据库时。这是可以理解的:foregin key不能为null,当我在db中创建新列时,Entity Framework会创建新的NULL单元格。
问题是:我该怎么做才能绕过它?尽管如此,我怎样才能添加新的外键?
答案 0 :(得分:0)
我之前有类似的情况,虽然在我的情况下它是主键。
我通过编辑迁移脚本来传递它。
答案 1 :(得分:0)
这实际上不是实体框架代码第一个问题,而是数据库问题。
如果您尝试向表中添加列,然后使用主键表添加外键约束,则会出现相同的错误。
原因是您已创建列为null,作为每个现有记录的默认值。然后,在应用约束时,您将尝试将null与父表的主键相关联。
因此,解决方案是以下几种选择之一:
如果不需要当前数据(应用程序的初始开发),则清除数据 - 这将允许创建关系,并且仅在添加数据时生效。
为父列中具有现有值的新列设置默认值,以便任何记录都不会无法找到父键值。所以,如果你知道总会有一个值为' 1'在父表中,您可以使用' 1'作为默认设置(仅限临时解决方案 - 将在实时应用程序的未来允许无效数据)。
创建没有关系的列,使用相关值填充列,然后添加约束。