发生了一个引用完整性约束违反Nullable FK

本文关键字:完整性约束 Nullable FK 引用 一个 发生了 | 更新日期: 2023-09-27 18:12:22

在我的表中有一个可空的int作为fk,如下所示。我把FK变成了?但如果我试图保存一个空值得到一个参考约束错误?

  [Table("Tests")]
  public class Tests : BaseEntity 
  {
    [MaxLength(255)]
    public virtual string TestName { get; set; }
    public virtual int? ProjectId { get; set; }
    [ForeignKey("ProjectId")]
    public virtual Project Project { get; set; }
  }       
 [Table("Project")]
  public class Project : BaseEntity
  {
    [Required, MaxLength(100)]
    public virtual string Name { get; set; }
    [Required, MaxLength(200)]
    public virtual string Type { get; set; }
  }
  public class BaseEntity 
  {
    [Key, Required]
    public virtual int Id { get; set; }
    [Required]
    public virtual DateTime CreatedDate { get; set; }
  }
  _testsRepo.InsertOrUpdateAndGetId(test);

例外:

系统。InvalidOperationException:一个引用完整性约束发生了违规行为:项目的属性值。我在一边的属性值不匹配的测试。投影在另一端。

发生了一个引用完整性约束违反Nullable FK

所以问题是在AutoMapper代码中,我需要以下行

.ForMember(dest => dest.ProductId, opts => opts.MapFrom(src => src.ProductId))
.ForMember(dest => dest.Product, opts => opts.Ignore());