繁体   English   中英

如何配置多对多实体框架关系,但要同一个对象? EF6

[英]How to configure many-to-many entity framework relationship, but to same object? EF6

我有课,像这样

public MyObject {
    public long Id { get; set; }
    public string Name {get; set; }
}

我想在此类和另一个相同类型的对象之间建立链接。 所以我需要另一个对象来处理多对多关系,这很好,像这样

public MyRelationship {
    public long Id { get; set; }
    public string Name { get; set; }
}

但是我如何配置其余的。 我在网上尝试过示例,但它们实在太不同了。

我已经尝试将导航属性添加到MyRelationship中以供链接使用,如下所示

public MyRelationship {
    public long Id { get; set; }
    public string Name { get; set; }

    public MyObject Parent { get; set; }
    public MyObject Child { get; set; }
}

还有MyObject的2个集合,像这样

public MyObject {
    public long Id { get; set; }
    public string Name {get; set; }

    public virtual ICollection<MyRelationship> ParentRelationships { get; set; }

    public virtual ICollection<MyRelationship> ChildRelationships { get; set; }
}

然后在我的配置文件中添加了

// relationships
this.HasMany(e => e.ParentRelationships)
    .WithRequired(e => e.Parent)
    .HasForeignKey(e => e.ParentId)
    .WillCascadeOnDelete(false);

this.HasMany(e => e.ChildRelationships)
    .WithRequired(e => e.Child)
    .HasForeignKey(e => e.ChildId)
    .WillCascadeOnDelete(false);

但是我得到这样的错误

在类型“ MyObject”上声明的导航属性“ ChildRelationships”已配置有冲突的外键。

你为什么不这样做呢?

public MyObject{
    public long Id { get; set; }
    public string Name { get; set; }

    public ICollection<MyObject> Parents { get; set; }
    public ICollection<MyObject> Children { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM