c# - 可空 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;
这显然不是最好的解决方案。那么这里的问题是什么?
解决方案
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)
推荐阅读
- python - 如何使用 Networkx 包显示具有更好分离度的网络?
- nginx - 上游服务IP变化时Kubernetes nginx刷新ip地址
- android - 无法使用 react-native-image-picker 显示图像
- macos - 如何使用 XAMPP-VM for macOS 访问 htdocs 之外的文件?
- laravel-5.5 - 可以将 Laravel Request 对象作为参数发送给其他函数吗?
- r - R中分类的Model和$FinalModel之间的区别?
- php - 将 DOM createElement 中的两个变量相乘
- php - 调用带有引用的函数时,foreach 循环的行为异常(将一项替换为另一项)
- apache-kafka - Kafka 处理的生产者-消费者处理模式
- jquery - 如何找到具有相同属性值的所有xml节点