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了吗?你只能有一个,即使你给他们起不同的名字。