C# 在实体框架中创建多个自引用类

C# 在实体框架中创建多个自引用类,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,如何让EF以正确的方式从下面的类中构建DB?是否有任何方法仅使用DataAnnotation属性存档此文件 public class Item { [Key] public long ItemId { get; set; } ... public virtual ICollection<Item> PrevItems { get; set; } public virtual ICollection<Item> NextItems {

如何让EF以正确的方式从下面的类中构建DB?是否有任何方法仅使用DataAnnotation属性存档此文件

public class Item
{
    [Key]
    public long ItemId { get; set; }
    ...
    public virtual ICollection<Item> PrevItems { get; set; }
    public virtual ICollection<Item> NextItems { get; set; }
}
公共类项目
{
[关键]
公共长项目ID{get;set;}
...
公共虚拟ICollection PreviItems{get;set;}
公共虚拟ICollection NextItems{get;set;}
}

以下是我的解决方案:

  • 创建配置类:

    public ItemConfiguration()
    {
        this.HasMany(x => x.NextItems)
           .WithMany(x => x.PrevItems)
           .Map(x => x.ToTable("RelatedItems"));
    }
    
  • 在DbContext中重写模型创建

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new ItemConfiguration());
    }
    
  • 我不确定这是否100%正确,但它似乎有效

    如果有人知道如何仅使用DataAnnotation属性存档此文件,我很乐意知道