gpt4 book ai didi

c# - 如何解决 .NET Core with EF Core 必填字段错误?

转载 作者:行者123 更新时间:2023-12-02 01:49:00 25 4
gpt4 key购买 nike

我有一个 .NET Core (6.0.1) API,它是使用 EF Core (6.0.1) 的数据库优先方法构建的。每当我尝试 POST 到特定实体时,我都会收到实体中导航属性之一的“需要字段”错误。我还有其他几个以类似方式构建的实体,它们似乎工作正常,但这个实体给我带来了问题,我无法弄清楚。有什么想法吗?

来自 DBContext:

    modelBuilder.Entity<InsuranceCompanyStatus>(entity =>
{
entity.HasKey(e => e.InsCoStatusId);

entity.ToTable("InsuranceCompanyStatus");

entity.Property(e => e.InsCoStatusId).HasColumnName("InsCoStatusID");

entity.Property(e => e.InsuranceCompanyId).HasColumnName("InsuranceCompanyID");

entity.Property(e => e.State)
.HasMaxLength(2)
.IsUnicode(false)
.IsFixedLength();

entity.HasOne(d => d.InsuranceCompany)
.WithMany(p => p.InsuranceCompanyStatuses)
.HasForeignKey(d => d.InsuranceCompanyId)
.HasConstraintName("FK_InsuranceCompanyStatus_InsuranceCompanies");
});

脚手架模型:

    public partial class InsuranceCompanyStatus
{
public int InsCoStatusId { get; set; }
public Guid InsuranceCompanyId { get; set; }
public string State { get; set; } = null!;
public bool Admitted { get; set; }
public bool? Approved { get; set; }

public virtual InsuranceCompany InsuranceCompany { get; set; } = null!;
}

来自尝试的 POST 正文的 JSON:

    {
"insuranceCompanyId": "caa3e956-a3be-4670-83e3-53a6ec47731e",
"state": "AL",
"admitted": true,
"approved": true
}

错误响应状态为400:

    {
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-cf1de6fe8e4fb67a04ff7d4c8b6a1c68-f426059123424d72-00",
"errors": {
"InsuranceCompany": [
"The InsuranceCompany field is required."
]
}
}

最佳答案

您必须创建可为空的 InsuranceCompanyId

public partial class InsuranceCompanyStatus
{
public int InsCoStatusId { get; set; }

....
public Guid? InsuranceCompanyId { get; set; }

public virtual InsuranceCompany InsuranceCompany { get; set; } // = null!; you don't need it , it is null by default
}

它通常有效,但如果仍然无效,您可以在 fluent appi 中显式添加它

 modelBuilder.Entity<InsuranceCompanyStatus>(entity =>
{
.....
entity.Property(e => e.InsuranceCompanyId).IsOptional();

关于c# - 如何解决 .NET Core with EF Core 必填字段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70551158/

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