实体框架“不支持每种类型的多个对象集”。

时间:2018-03-14 17:42:47

标签: c# asp.net-mvc entity-framework

我正在尝试创建相同对象类型的父子关系模型。 完全像这里的那个:

Entity Framework Code First - two Foreign Keys from same table

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

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

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; }
}

RelationShip实体与父/子外键:

public class L_ColaboradorPais
{
    [Key]
    public int Id { get; set; }

    public int PaiId { get; set; }
    public int FilhoId { get; set; }


    public virtual L_Colaborador Pai { get; set; }
    public virtual L_Colaborador Filho { 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);
}

无法弄清楚为什么我会收到此错误:

  

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

我也尝试过使用ForeignKey注释

1 个答案:

答案 0 :(得分:1)

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

public DbSet<L_Colaborador> L_Colaboradores { get; set; }
public DbSet<L_ColaboradorPais> L_ColaboradorPais { get; set; }