EF Core Fluent API空外键

我有下表:产品,用户和产品批准。每当用户创建新产品时,ProductApproval都会有一条带有产品ID的新记录,并且空ApprovedByUserId的记录,因为尚未批准。用户可以有多个ProductApproval,但一个产品只能有一个ProductApproval。

结构如下:

User.cs

public class User
{
    public int Id { get; set; }
    public string username { get; set; }

    public virtual ICollection<ProductApproval> ProductApprovals { get; set; }

    public User()
    {
       ProductApprovals = new Collection<ProductApproval>();
    }
}

Product.cs

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ProductApproval ProductApproval { get; set; }
}

ProductApproval.cs

public class ProductApproval
{
   public int Id { get; set; }

   public virtual Product Product { get; set; }
   public int? ProductId { get; set; }

   public virtual User User { get ;set; }
   public int? ApprovedByUserId { get; set; }

}

DataContext.cs

modelBuilder.Entity<User>()
   .HasMany(u => u.ProductApprovals)
   .WithOne(pa => pa.User)
   .HasForeignKey(pa => pa.ApprovedByUserId)
   .isrequired(false);

modelBuilder.Entity<Product>()
   .HasOne(p => p.ProductApproval)
   .WithOne(pa => pa.Product)
   .HasForeignKey<ProductApproval>(pa => pa.ProductId);

我已经将外键ApprovedByUserId声明为可为空,但是当我在productapprovals中插入一条记录时,仍然出现以下错误: MySqlException:无法添加或更新子行:外键约束失败(mysiteproductapprovals,CONSTRAINT FK_ProductApprovals_Users_ApprovedByUserId外部键(ApprovedByUserId)参考{{1 }}(users上的删除限制)

请告知我在哪里做错了

iCMS 回答:EF Core Fluent API空外键

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2122450.html

大家都在问