2011-01-25 11 views
51

Prefiero usar sustantivos singulares al nombrar las tablas de mi base de datos. Sin embargo, primero en el código EF, las tablas generadas siempre son plurales. Mis DbSets están pluralizados y creo que es donde EF está generando los nombres, pero no quiero singularizarlos porque creo que es más práctico tenerlos en código. También intenté sobreescribir la configuración, pero fue en vano.¿Cómo singularizo mis tablas en EF Code First?

¿Alguna idea? Aquí está mi código y gracias.

MyObjectContext.cs

public class MyObjectContext : DbContext, IDbContext 
{ 
    public MyObjectContext(string connString) : base(connString) 
    { 
    } 
    public DbSet<Product> Products {get;set;} 
    public DbSet<Category> Categories {get;set;} 
    //etc. 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>(); 
    } 
} 

Respuesta

83

Usted ha quitado la convención mal (PluralizingEntitySetNameConvention) para este fin. Simplemente reemplace su método OnModelCreating con el siguiente y estará listo.

using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db; 
... 
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{  
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 

Con Entity Framework 6, en el archivo que heredar de DbContext:

using System.Data.Entity.ModelConfiguration.Conventions; 

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 
+15

El nombre cambió de CTP5 a EF 4.1. Esto ahora se llama DbModelBuilder. – campo

1

La ubicación de la definición de PluralizingTableNameConvention se ha trasladado a:

using System.Data.Entity.ModelConfiguration.Conventions;

2

También puede cambiar el valor de la propiedad:

En el menú Herramientas, haga clic en Opciones. En el cuadro de diálogo Opciones, expanda Herramientas de base de datos. Haga clic en O/R Designer. Establecer la pluralización de nombres en Habilitado = Falso para configurar el Diseñador de O/R para que no cambie los nombres de clase. Establecer la pluralización de nombres en Habilitado = Verdadero para aplicar reglas de pluralización a los nombres de clase de los objetos agregados al Diseñador de O/R.

Cuestiones relacionadas