实体类DataAnnotations核心2.0中的自引用

时间:2018-07-04 04:25:52

标签: c# entity-framework-core self-reference ef-core-2.0

我正在尝试将其转换为DataAnnotations

HasOptional(x => x.ParentEntity)
.WithMany(parentEntity => parentEntity.childrenEntities)
.HasForeignKey(childrenEntity => childrenEntity.ParentEntityId)
.WillCascadeOnDelete(false);

这是我的问题,我有一个引用自己的实体。

public class Product
{
    [Key]
    public int ProductId {get; set;}
    public int? ProductParentId {get; set;}
    [ForeignKey("ProductParentId")]
    [InverseProperty("childrenProducts")]
    public virtual Product ParentProduct { get; set; }
    [ForeignKey("ProductParentId")]
    public virtual List<Products> childrenProducts{ get; set; }
}

但是我不断收到错误消息,指出已使用InversePropertyAttribute和ForeignKeyAttribute指定了无效关系,并且值不同。

这是我的桌子:

产品表

ProductId   ProductName ProductParentId 
1           Test        Null
2           Test 1      1
3           Test 2      1

我期望得到产品及其孩子,有没有办法实现?

先谢谢您。

1 个答案:

答案 0 :(得分:0)

外键不属于列表。改用InverseProperty

[InverseProperty("ParentProduct")]
public virtual List<Products> childrenProducts{ get; set; }