我有下表:产品,用户和产品批准。每当用户创建新产品时,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:无法添加或更新子行:外键约束失败(mysite
。productapprovals
,CONSTRAINT FK_ProductApprovals_Users_ApprovedByUserId
外部键(ApprovedByUserId
)参考{{1 }}(users
上的删除限制)
请告知我在哪里做错了