От многих до многих отношений в EF5 Code First, как я могу указать имя таблицы?
Я новичок в EF, и я не уверен, как это сделать.
У меня есть отношение "многие ко многим", точно так же:
![enter image description here]()
Когда я пытаюсь добавить ресурс (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; }
}
Ответы
Ответ 1
Вам необходимо использовать 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");
});
}
}
Вы можете ознакомиться с этим учебным пособием по взаимодействию с Fluent API для получения дополнительной информации