2011-05-05 16 views
13

Estoy usando estándares para nombres de tablas singulares. EF4 Code First tiene por defecto para pluralizar nombres de tabla. He puesto el código para anular esta convención, pero parece que no está funcionando.EF4 Code First make tables names singular

usando sección: contexto

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 
using System.Data.Entity; 
using System.Data.Entity.Database; 
using System.Data.Entity.ModelConfiguration; 
using System.Data.Entity.ModelConfiguration.Conventions.Edm; 

datos:

public class SiteDataContext : DbContext 
    { 
     public DbSet<Blog> Blogs { get; set; } 
     public DbSet<BlogFeedback> BlogFeedbacks { get; set; } 
     public DbSet<BlogCategory> BlogCategories { get; set; } 

     // Twist our database 
     protected override void OnModelCreating(ModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>(); 
      base.OnModelCreating(modelBuilder); 
     } 
    } 

tablas creadas:

  • blogs
  • BlogFeedbacks
  • BlogCategories

Cuando debido a la anulación de convenciones (y lo que necesito) deben ser:

  • Blog
  • BlogFeedback
  • BlogCategory

alguien tiene una idea de por qué la línea de anulación es ¿no funciona? Muchas gracias.

Respuesta

27

Su usando la convención mal. Debes hacer lo siguiente.

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

¡Esa fue una buena idea! ¡Tienes razón, he cambiado y ahora está funcionando! Muchas gracias. – Nestor

+2

Tenga en cuenta que en EF5 el tipo de parámetro es DbModelBuilder – justabuzz

+0

Dude, Thanks a ton. Justo en la uña. – VivekDev

Cuestiones relacionadas