2012-08-02 17 views
15

EF için oldukça yeni ve bunu nasıl yapacağından emin değilim. EF5 Kod İlk'de birçok ilişkiye birçok, tablo adını nasıl belirleyebilirim?

Tam böyle bir çok-çok ilişki vardır:

enter image description here

Bir profile (Perfil) bir kaynak (recurso) eklemeye çalıştığınızda, aşağıdaki hatayı alıyorum: cehennem RecursoPerfils geldi

Invalid object name 'dbo.RecursoPerfils

?

Bu ilişki için tablo adını nasıl belirleyebilirim (tercihen özellik ek açıklamaları ile birlikte)? Sen katılmak tablonun tablo adını yapılandırmak için Akıcı API kullanmak gerekir

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

cevap

34

:

altında modellere bakın. Sen daha fazla bilgi için bu Fluent API relationship mapping tutorial geçebilir

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

+0

teşekkür ederiz. Fluent API'sini ve yalnızca öznitelikleri kullanmadan bunu yapmanın bir yolu olmadığını var mı? –

+1

@ConradClark Evet. Öznitelikler, tam yapılandırma yeteneklerini sunmaz. – Eranga

+0

Harika cevap. Teşekkürler! –

İlgili konular