【问题标题】:Entity Framework validation error when nullable FK is null可空 FK 为空时的实体框架验证错误
【发布时间】:2023-03-23 04:13:01
【问题描述】:

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

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

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

我声明的外键没有任何属性,例如[Required],就像here 一样,所以这个答案不适用于我。它只是一个简单的 FK:

 public int? SomeForeignKeyId { get; set; }

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

 Configuration.ValidateOnSaveEnabled = false;

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

【问题讨论】:

    标签: c# wpf entity-framework


    【解决方案1】:

    我自己找到了解决方案(而且相当快,哈哈)

    我的模型构建器中有这个

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

    .WithRequired(i =&gt; i.ForeignModel) 显然根据需要声明了该列,因此解决方案是将其更改为 .WithOptional(i =&gt; i.ForeignModel)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      相关资源
      最近更新 更多