gpt4 book ai didi

c# - Entity Framework 中一个或多个实体对可空 bool 属性的验证失败

转载 作者:太空狗 更新时间:2023-10-29 21:56:19 26 4
gpt4 key购买 nike

我的类看起来像这样,我添加了可以为 null 的新属性 IsModified。我可以仅使用 Name 和 Key 属性创建 A 类型的新实体,但是当我尝试更新数据库中 IsModified 为 null 的任何现有记录的键时,我从 Entity Framework 得到这个错误:

System.Data.Entity.Validation.DbEntityValidationException. The IsModified field is required on context.SaveChangesAsync().

模型类:

public class A
{
public long ID { get; set; }
public string Key { get; set; }
public bool? IsModified { get; set; }
public string Name { get; set; }

public A()
{
this.IsModified = false;
}
}

SQL Server 表:

CREATE TABLE [dbo].[A]
(
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[Key] [nvarchar](max) NOT NULL,
[IsModified] [bit] NULL,
)

我正在使用 Entity Framework v6 和代码优先方法。 [IsModified] 可以为空,所以我不确定为什么仍然需要该字段。

最佳答案

这里的问题是 bool 值不能配置为 null。 EF 将始终认为它是必需的。我将 IsModified bit null 更改为 IsModified bit not null default 1 。并使用迁移使用默认值更新了现有记录。 引用 - https://learn.microsoft.com/en-us/ef/core/modeling/required-optional .

关于c# - Entity Framework 中一个或多个实体对可空 bool 属性的验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51740035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com