EF6 Code First - 自引用配置导航属性

时间:2016-06-23 09:47:36

标签: c# entity-framework

我试图创建这个简单的类别表:

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

    public string Name { get; set; }

    public int? ParentId { get; set; }

    [InverseProperty("Children")]
    public Category Parent { get; set; }

    [InverseProperty("Parent")]
    [ForeignKey("ParentId")]
    public virtual ICollection<Category> Children { get; set; }
}

我希望-as编码 - 双方都有导航属性,但这并不起作用。 儿童属性存在问题。

每当我从DbContext查询类别时,我得到:

  

对象引用未设置为对象的实例

(我尝试使用和不使用 [InverseProperty]

任何提示?谢谢......

修改

对不起,我发现问题出现在这个实体的另一个导航属性中,我没有在上面的代码中列出。这个问题现在没有意义,我将其标记为删除,但感谢@TanguyB和@Pavel Bory寻求帮助。

2 个答案:

答案 0 :(得分:0)

您是否尝试在类中的构造函数中初始化ICollection。我也遇到了一些问题,并为我修好了。

答案 1 :(得分:0)

您确定数据库中没有损坏/不一致的数据吗?因为我试图像你一样实现相同的Model类别,它可以工作。我尝试创建类别的实例并链接它们,然后从数据库重新加载它,它的工作原理。尝试从数据库中删除数据并再次尝试。如果在此之后出现问题,您可以发布DbContext类和代码段的代码示例吗?