2010-08-14 7 views
8

Date le seguenti classi POCO:Convenzioni di denominazione in generato molti-a-molti tabella utilizzando il codice EF4 CTP4 primo approccio

public class Certification { 
    public int Id { get; set; } 
    public virtual ICollection<Employee> CertifiedEmployees { get; set; } 
} 

public class Employee { 
    public int Id { get; set; } 
    public virtual ICollection<Certification> Certifications { get; set; } 
} 

Creazione del modello di database utilizzando il codice di primo approccio EF4 CTP4 non creare la tabella di giunzione desiderata:

CREATE TABLE [dbo].[Certifications_CertifiedEmployees](
[Certifications_Id] [int] NOT NULL, 
[CertifiedEmployees_Id] [int] NOT NULL, 
    ... 

Tuttavia, il nome della tabella ed i nomi delle colonne non sono l'ideale perché sono generati dai nomi delle proprietà di classe associati. Avrei preferito:

CREATE TABLE [dbo].[Employees_Certifications](
[Employee_Id] [int] NOT NULL, 
[Certification_Id] [int] NOT NULL, 
    ... 

Qualcuno sa se è possibile cambiare i nomi delle colonne generate in questo scenario, e, facoltativamente, per cambiare anche il nome della tabella in modo che dipendenti è di prima certificazioni?

Grazie, Gary

risposta

7

ho usato l'API fluente per modificare la tabella di giunzione generato:

modelBuilder.Entity<Employee>() 
    .HasMany(e => e.Certifications) 
    .WithMany(c => c.Employees) 
    .Map("Employees_Certifications", (e, c) => new { 
     Employee_Id = e.Id, 
     Certification_Id = c.Id }); 
+0

Grazie per questa risposta utile, ma potresti dirmi come modificare questa tabella generata, ad esempio: aggiungi colonna aggiuntiva? –

8

Chiunque inciampare su questo ora e l'utilizzo di una nuova versione di EF potrebbe essere necessario modificare l'ultima sezione @gxclarke rispondere a:

.Map(
     m => { 
      m.MapLeftKey("Employee_Id"); 
      m.MapRightKey("Certification_Id"); 
      m.ToTable("Employees_Certifications"); 
     } 
    ); 

come sembra come se i parametri del metodo sono stati modificati per accettare solo l'azione e non il nome della tabella.

+0

Grazie per questa risposta. Non necessariamente è facile ottenere l'aiuto di EF online in linea, visto quanto il quadro è cambiato negli ultimi anni. –

Problemi correlati