C# 实体框架“;不支持每种类型有多个对象集&引用;

C# 实体框架“;不支持每种类型有多个对象集&引用;,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正在尝试创建相同对象类型的父子关系模型。 和这里的一模一样: 我尝试了上面提到的所有方法,但是迁移总是给我上面提到的错误 以下是我的模型: 主要实体: public class L_Colaborador { [Key] public int Id { get; set; } public String Nome { get; set; } [JsonIgnore] public virtual List<L_ColaboradorPais&g

我正在尝试创建相同对象类型的父子关系模型。 和这里的一模一样:

我尝试了上面提到的所有方法,但是迁移总是给我上面提到的错误

以下是我的模型: 主要实体:

public class L_Colaborador
{
    [Key]
    public int Id { get; set; }
    public String Nome { get; set; }

    [JsonIgnore]
    public virtual List<L_ColaboradorPais> L_ColaboradorPais { get; set; }

    [JsonIgnore]
    public virtual List<L_ColaboradorPais> L_ColaboradorFilhos { get; set; }
}
以下是我的DBContext:

public DbSet<L_Colaborador> L_Colaboradores { get; set; }
public DbSet<L_Colaborador> L_ColaboradorPais { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{


   modelBuilder.Ignore<V_HorasSum>();
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

    modelBuilder.Entity<L_ColaboradorPais>()
            .HasRequired(m => m.Pai)
            .WithMany(t => t.L_ColaboradorFilhos)
            .HasForeignKey(m => m.PaiId)
            .WillCascadeOnDelete(false);

    modelBuilder.Entity<L_ColaboradorPais>()
                .HasRequired(m => m.Filho)
                .WithMany(t => t.L_ColaboradorPais)
                .HasForeignKey(m => m.FilhoId)
                .WillCascadeOnDelete(false);


    //base.OnModelCreating(modelBuilder);
}
public DbSet L_colaboradors{get;set;}
公共数据库集L_ColaboradorPais{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
Ignore();
modelBuilder.Conventions.Remove();
modelBuilder.Entity()
.has必需(m=>m.Pai)
.有许多(t=>t.L_ColaboradorFilhos)
.HasForeignKey(m=>m.paid)
.WillCascadeOnDelete(假);
modelBuilder.Entity()
.HasRequired(m=>m.Filho)
.有许多(t=>t.L_ColaboradorPais)
.HasForeignKey(m=>m.FilhoId)
.WillCascadeOnDelete(假);
//基于模型创建(modelBuilder);
}
无法真正理解我为什么会出现此错误:

不支持每种类型有多个对象集。对象集“L_Colaboradores”和“L_ColaboradorPais”都可以包含“TimeProject.Models.L_Colaborador”类型的实例


我还尝试过使用ForeignKey注释,您告诉EF在您的DBContext中创建模型对象
L_Colaborador
两次。我想你的意思是:

public DbSet<L_Colaborador> L_Colaboradores { get; set; }
public DbSet<L_ColaboradorPais> L_ColaboradorPais { get; set; }
public DbSet L_colaboradors{get;set;}
公共数据库集L_ColaboradorPais{get;set;}

您告诉EF在您的DBContext中创建模型对象两次。我想你的意思是:

public DbSet<L_Colaborador> L_Colaboradores { get; set; }
public DbSet<L_ColaboradorPais> L_ColaboradorPais { get; set; }
public DbSet L_colaboradors{get;set;}
公共数据库集L_ColaboradorPais{get;set;}

你用谷歌搜索了你的错误消息吗?你提到了
L\u Colaboratores
,但在你的代码中我们看不到。那不可能是你所有的数据库集。类型
PM
在哪里定义?例外情况是告诉您
DbContext
包含属性
public DbSet L_ColaboradorPais{get;set;}
。属性的类型应更改为
DbSet
。您看到如何有两个相同类型的DbSet了吗?即使你用不同的名称命名,你也只能有一个。你用谷歌搜索了你的错误消息吗?你提到了
L_Colaboratores
,但在你的代码中我们看不到。那不可能是你所有的数据库集。类型
PM
在哪里定义?例外情况是告诉您
DbContext
包含属性
public DbSet L_ColaboradorPais{get;set;}
。属性的类型应更改为
DbSet
。您看到如何有两个相同类型的DbSet了吗?你只能有一个,即使你给他们起不同的名字。