2013-06-14 7 views
6

Ho un utente-ruolo molti-a-molti, specificato da questo estratto da una classe derivata EntityTypeConfiguration<Role> che mi permette di specifiy schemi per singole tabelle, ad esempio:Come specificare uno schema per una tabella di relazioni molti-a-molti?

[Schema(SchemaNames.ParkPay)] 
class WeekDayConfig : EntityTypeConfigurationWithSchema<WeekDay> 
{ 
    internal WeekDayConfig() 
    { 
     Ignore(t => t.IsDeleted); 
     Property(p => p.Name) 
      .IsRequired() 
      .HasMaxLength(20); 
    } 
} 

Ora, per Role, la configurazione la classe contiene questo codice e la tabella risultante UserRole viene creata nello schema 'dbo', non lo schema desiderato. Ciò è che il codice:

[Schema(SchemaNames.ParkPay)] 
internal class RoleConfig : EntityTypeConfigurationWithSchema<Role> 
{ 
    public RoleConfig() 
    { 
     HasMany(t => t.Users) 
      .WithMany(t => t.Roles) 
      .Map(m => 
        { 
         m.ToTable("UserRole");        
         m.MapLeftKey("RoleId"); 
         m.MapRightKey("UserId"); 
        }); 
    } 
} 

C'è qualcosa che posso fare, tranne lo script una modifica dello schema durante la fase di semina di inizializzazione, per avere tavolo UserRole creata sotto lo schema del 'parkpay' e non il 'dbo' schema?

+2

Hai provato questo? Sembra un sovraccarico di 'ToTable': http://stackoverflow.com/questions/6028375/entity-framework-code-first-many-to-many-setup-for-existing-tables – rliu

risposta

10

non vedo perché questo non avrebbe funzionato:

public RoleConfig() 
{ 
    HasMany(t => t.Users) 
    .WithMany(t => t.Roles) 
    .Map(m => 
    { 
     m.ToTable("UserRole","parkpay");        
     m.MapLeftKey("RoleId"); 
     m.MapRightKey("UserId"); 
    }); 
} 
+1

Neanch'io, e lo fa . Grazie, ho perso quel sovraccarico. – ProfK

+0

Esiste un metodo DataAnnotations per fare ciò? – RoLYroLLs