2016-10-10 52 views
2

我的表中有一個可爲空的int作爲fk,如下所示。我做了FK int ?.但是,如果我試圖用空值保存一個參考約束錯誤?發生參照完整性約束違規Nullable 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); 

例外:

System.InvalidOperationException:參照完整性約束髮生 違規: 'Project.Id' 的一端上的屬性值(S)的關係的 不在另一端匹配'Tests.ProjectId'的屬性值 。

+0

可以顯示完整的異常? – Sampath

+0

你也可以顯示'Project'模型的代碼嗎? – Sampath

+0

它是我的理解,使fk一個int?應該是所有必需的 – MicroMan

回答

1

所以這個問題是在AutoMapper代碼我需要以下行

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