父母与子女之间的关系不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了父母与子女之间的关系不起作用相关的知识,希望对你有一定的参考价值。

我在实体框架6中遇到父子关系的问题,其中父母有一个孩子的列表,而孩子的一个是最喜欢的孩子。执行实体添加时,EF抛出该错误:

错误!无法确定相关操作的有效排序。由于外键约束,模型要求或存储生成的值,可能存在依赖关系。

例:

public class Child
{
    public int ChildID { get; set; }
    public string ChildName { get; set; }

    [ForeignKey("Parent")]    
    public int ParentRefId { get; set; }

    public Parent Parent { get; set; }
}

public class Parent
{
    public int ParentId { get; set; }
    public string ParentName { get; set; }

    public int FavoriteChildId {get;set;}

    [ForeignKey("FavoriteChildId")]
    public Child FavoriteChild {get;set;}

    [ForeignKey("ParentRefId")]
    public ICollection<Child> Children { get; set; }
}

它也不起作用:

 public class Child
    {
        public int ChildID { get; set; }
        public string ChildName { get; set; }

        [ForeignKey("Parent")]    
        public int ParentRefId { get; set; }

        public Parent Parent { get; set; }
    }

    public class Parent
    {
        public int ParentId { get; set; }
        public string ParentName { get; set; }

        [ForeignKey("FavoriteChild ")]
        public int FavoriteChildId {get;set;}           

        public Child FavoriteChild {get;set;}            

        public ICollection<Child> Children { get; set; }
    }
答案

我更喜欢fluent api这样的配置,但你可以尝试InverseProperty annotation

public class Child
{
    public int ChildID { get; set; }
    public string ChildName { get; set; }

    // EF will make FK by convention
    public int ParentId { get; set; }
    public Parent Parent { get; set; }

    public int? FavoriteOfParentId { get; set; }
    public Parent FavoriteOfParent { get; set; }
}

public class Parent
{
    public int ParentId { get; set; }
    public string ParentName { get; set; }

    public int FavoriteChildId {get;set;}           
    [InverseProperty("FavoriteOfParent")]
    public Child FavoriteChild {get;set;}            

    [InverseProperty("Parent")]
    public ICollection<Child> Children { get; set; }
}

以上是关于父母与子女之间的关系不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在组合键上使用“链接”外键的问题

多对多关系 GAE NDB 需要父母还是子女?

线性回归

线性回归

如何在Laravel中建立父母/子女关系?

为什么有的父母喜欢在子女之间,来回拨弄是非,使他们反目?