如何配置多对多实体框架关系,但要到同一个对象?EF6.
本文关键字:EF6 一个对象 关系 框架 何配置 配置 实体 | 更新日期: 2023-09-27 18:31:47
>我有一个类,像这样
public MyObject {
public long Id { get; set; }
public string Name {get; set; }
}
我想在此类和另一个相同类型的对象之间设置链接。 所以我需要另一个对象来处理多对多关系,这很好,像这样
public MyRelationship {
public long Id { get; set; }
public string Name { get; set; }
}
但是我如何配置其余的。 我在网上尝试过示例,但它们是太不同的对象。
我尝试将导航属性添加到链接的MyRelations中,如下所示
public MyRelationship {
public long Id { get; set; }
public string Name { get; set; }
public MyObject Parent { get; set; }
public MyObject Child { get; set; }
}
还有 2 个集合到 MyObject,就像这样
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"上声明的导航属性"子关系"已配置了冲突的外键。
你为什么不这样做呢?
public MyObject{
public long Id { get; set; }
public string Name { get; set; }
public ICollection<MyObject> Parents { get; set; }
public ICollection<MyObject> Children { get; set; }
}