我对EF还不熟悉。我遇到了一个创建自引用多对多关系的问题。
我尝试使用以下解决方案:Entity Framework Core: many-to-many relationship with same entity
我的实体:
public class WordEntity
{
public long Id { get; set; }
public string Name { get; set; }
public string Json { get; set; }
public virtual List<WordSinonymEntity> Sinonyms { get; set; }
}
public class WordSinonymEntity
{
public long WordId { get; set; }
public virtual WordEntity Word { get; set; }
public long SinonymId { get; set; }
public virtual WordEntity Sinonym { get; set; }
}
接下来是配置:
modelBuilder.Entity<WordSinonymEntity>()
.HasOne(pt => pt.Sinonym)
.WithMany(p => p.Sinonyms)
.HasForeignKey(pt => pt.SinonymId);
modelBuilder.Entity<WordSinonymEntity>()
.HasOne(pt => pt.Word)
.WithMany(t => t.Sinonyms)
.HasForeignKey(pt => pt.WordId);`
但它会导致下一个异常。
System.InvalidOperationException:“无法在'WordEntity.Sinonyms'和'WordSinonymEntity.Word'之间创建关系,因为'WordEntity.Sinonyms'和'WordSinonymEntity.Sinonym'之间已经存在关系。导航属性只能参与一个关系。”
有人可以帮助我或者提供一些学习示例吗? 谢谢。
Concat
。如果添加此类属性,请确保它不被视为单独的关系。还请注意,它不能在 LINQ to Entities 查询中使用。 - Ivan StoevHas
/With
流畅API配对(并关闭级联删除,因为存在可能循环或多个级联路径的SqlServer问题)。这是你所要求的吗?如果不是,请考虑发布自己的问题,说明你的具体要求,因为答案涉及特定的OP案例,即多对多。 - Ivan Stoev