web-dev-qa-db-fra.com

Comment singulariser mes tableaux dans EF Code First?

Je préfère utiliser des noms singuliers lorsque je nomme mes tables de base de données. Cependant, dans le code EF, les tables générées sont toujours plurielles. Mes DbSets sont pluralisés, ce qui, selon moi, est l'endroit où EF génère les noms, mais je ne veux pas les singulariser car je pense qu'il est plus pratique de les avoir au pluriel dans le code. J'ai également essayé de remplacer le paramètre, mais en vain.

Des idées? Voici mon code et merci.

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>();
     }
}
56
trevorc

Vous avez supprimé la mauvaise convention (PluralizingEntitySetNameConvention) à cet effet. Remplacez simplement votre méthode OnModelCreating par celle-ci et vous serez prêt à partir.

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

Avec Entity Framework 6, sur votre fichier héritant de DbContext:

using System.Data.Entity.ModelConfiguration.Conventions;

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
89
Morteza Manavi

Vous pouvez également modifier la valeur de la propriété:

Dans le menu Outils, cliquez sur Options. Dans la boîte de dialogue Options, développez Outils de base de données. Cliquez sur O/R Designer. Définissez la pluralisation des noms sur Enabled = False pour définir le concepteur O/R afin qu'il ne modifie pas les noms de classe. Définissez la pluralisation des noms sur Enabled = True pour appliquer des règles de pluralisation aux noms de classe des objets ajoutés au concepteur O/R.

3
Francisco

L'emplacement de la définition de PluralizingTableNameConvention a été déplacé vers:

using System.Data.Entity.ModelConfiguration.Conventions;

1
Mythlandia