Con*_*ark 18 many-to-many ef-code-first entity-framework-5
我对EF很新,我不确定如何做到这一点.
我有一个多对多的关系,就像这样:

当我尝试将资源(Recurso)添加到配置文件(Perfil)时,我收到以下错误:
Invalid object name 'dbo.RecursoPerfils
地狱到底RecursoPerfils来自哪里?
如何指定(最好通过属性注释)此关系的表名?
请参阅以下模型:
[Table("Perfil")]
public class Perfil
{
public Perfil()
{
this.Usuarios = new List<Usuario>();
this.Recursos = new List<Recurso>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int IdPerfil { get; set; }
[Required]
public string Descricao { get; set; }
public virtual ICollection<Usuario> Usuarios { get; set; }
public virtual ICollection<Recurso> Recursos { get; set; }
}
[Table("Recurso")]
public class Recurso
{
public Recurso()
{
this.Perfis = new List<Perfil>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int IdRecurso { get; set; }
[Required]
public string NomeRecurso { get; set; }
[Required]
public string Descricao { get; set; }
public virtual ICollection<Perfil> Perfis { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Era*_*nga 40
您需要使用Fluent API来配置连接表的表名.
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Perfil>()
.HasMany(p => p.Recursos)
.WithMany(r => r.Perfis)
.Map(mc =>
{
mc.MapLeftKey("IdPerfil");
mc.MapRightKey("IdRecurso");
mc.ToTable("PerfilRecurso");
});
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过此Fluent API关系映射教程获取更多信息