在分层模型中定义的外键

时间:2013-01-07 15:21:51

标签: c# entity-framework

在EF5中定义模型时遇到问题。我想在数据库中将ParentId作为外键,但我收到错误:

  

System.Data.Entity.Edm.EdmAssociationType ::多重性与关系“Category_Parent”中角色“Category_Parent_Target”中的引用约束冲突。由于从属角色中的所有属性都是不可为空的,因此主要角色的多重性必须为“1”。

这是我的模特:

public class Category
{
    public Category()
    {
        this.Childs = new HashSet<Category>();
    }
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public int ParentId { get; set; }
    public virtual Category Parent { get; set; }
    public virtual ICollection<Category> Childs { get; set; } 
}

modelBuilder.Entity<Category>()
            .HasOptional(c => c.Parent)
            .WithMany(c => c.Childs)
            .HasForeignKey(d => d.ParentId);

1 个答案:

答案 0 :(得分:1)

如果Category可能有Parent,也可能没有,ParentId可能有也可能没有值。

所以,让ParentId可以为空:

public int? ParentId { get; set; }