首页 > 解决方案 > 可空 FK 为空时的实体框架验证错误

问题描述

信息:.Net Framework WPF 应用程序,Entity Framework 6

当我尝试将实体添加到我的数据库表中并将其可为空的外键设置为 null 时,我从 Entity Framework 收到以下验证错误:

抛出的异常:EntityFramework.dll 中的“System.Data.Entity.Validation.DbEntityValidationException”
状态“已添加”的“项目”类型实体具有以下验证错误:
属性:“SomeForeignKeyId”,
错误:“字段“SomeForeignKeyID”是必需的.

我声明的外键没有任何属性,例如此处[Required]的情况,因此该答案不适用于我。它只是一个简单的 FK:

 public int? SomeForeignKeyId { get; set; }

现在对我来说一个临时解决方法是禁用 EF 验证

 Configuration.ValidateOnSaveEnabled = false;

这显然不是最好的解决方案。那么这里的问题是什么?

标签: c#wpfentity-framework

解决方案


Found the solution myself (and rather fast lol)

I had this in my model builder

     modelBuilder.Entity<ForeignModel>()
     .HasMany(c => c.Items)
     .WithRequired(i => i.ForeignModel)
     .HasForeignKey(i => i.SomeForeignKeyId)
     .WillCascadeOnDelete(false); 

The .WithRequired(i => i.ForeignModel) obviously declared the column as required so the solution is to change it to .WithOptional(i => i.ForeignModel)


推荐阅读