Yara Yara - 2 months ago 11
C# Question

How turn off pluralize table creation for Entity Framework 5?

I am trying to use Entity Framework 5. The first problem was that EF creats tables automatically. I tried to fix it by including

dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>()
. The second problem was the error like this


The model backing the 'CountryContext' context has changed since the
database was created. Consider using Code First Migrations to update
the database.


I tried fix it by
dbModelBuilder.Conventions.Remove<IncludeMetadataConvention>();
but no sense.
The data access layer the next:

Table(Name = "tblCountries")]
public class Country
{
[Column(Name = "id", IsDbGenerated = true, IsPrimaryKey = true)]
public int Id {get;set;}

[Column(Name = "name")]
public string Name {get;set;}
}

public class CountryContext:DbContext
{
public CountryContext(string connStr):base(connStr)
{
}

public DbSet<Country> TblCountries { get; set; }

protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
{
dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
dbModelBuilder.Conventions.Remove<IncludeMetadataConvention>();
}
}

public class CountryDal:BaseDal
{
public int CheckIsExist(Country country)
{
int id = 0;
using (var context = new CountryContext(ConnectionString))
{
var first = context.TblCountries.FirstOrDefault(el => el.Name == country.Name);
if (first != null)
{
id = first.Id;
}
}
return id;
}
}


Additional info: VS 2012, framework 4.5, entity framework 5.0.0.0
And for EF 4 it works perfect (without OnModelCreating method).

Answer

You can write this code in OnModelCreating method:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
Comments