Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I singularize my tables in EF Code First?

I prefer using singular nouns when naming my database tables. In EF code first however, the generated tables always are plural. My DbSets are pluralized which I believe is where EF is generating the names but I don't want to singularize these names as I believe it is more pratical to have them plural in code. I also tried overriding the setting but to no avail.

Any ideas? Here is my code and thanks.

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>();      } } 
like image 625
trevorc Avatar asked Jan 25 '11 17:01

trevorc


People also ask

How do I use code first in Entity Framework?

Step 1 − First, create the console application from File → New → Project… Step 2 − Select Windows from the left pane and Console Application from the template pane. Step 3 − Enter EFCodeFirstDemo as the name and select OK. Step 4 − Right-click on your project in the solution explorer and select Manage NuGet Packages…


2 Answers

You've removed the wrong convention (PluralizingEntitySetNameConvention) for this purpose. Just replace your OnModelCreating method with the below and you will be good to go.

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

With Entity Framework 6, on your file that inherit from DbContext:

using System.Data.Entity.ModelConfiguration.Conventions;  protected override void OnModelCreating(DbModelBuilder modelBuilder) {     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } 
like image 168
Morteza Manavi Avatar answered Oct 14 '22 06:10

Morteza Manavi


You can also change the property value:

On the Tools menu, click Options. In the Options dialog box, expand Database Tools. Click O/R Designer. Set Pluralization of names to Enabled = False to set the O/R Designer so that it does not change class names. Set Pluralization of names to Enabled = True to apply pluralization rules to the class names of objects added to the O/R Designer.

like image 44
Francisco Avatar answered Oct 14 '22 06:10

Francisco