我正在尝试创建相同对象类型的父子关系模型。 完全像这里的那个:
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注释
答案 0 :(得分:1)
您告诉EF在DBContext中两次创建模型对象L_Colaborador
。我想你的意思是:
public DbSet<L_Colaborador> L_Colaboradores { get; set; }
public DbSet<L_ColaboradorPais> L_ColaboradorPais { get; set; }