c# - que - ¿Cómo desactivar la creación de tablas plural para Entity Framework 5?
mvc entity framework español (3)
Estoy intentando utilizar Entity Framework 5. El primer problema fue que EF crea las tablas automáticamente. Intenté arreglarlo incluyendo dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>()
. El segundo problema fue el error como este.
El modelo que respalda el contexto ''CountryContext'' ha cambiado desde que se creó la base de datos. Considere el uso de Code First Migrations para actualizar la base de datos.
Intenté arreglarlo con dbModelBuilder.Conventions.Remove<IncludeMetadataConvention>();
pero no tiene sentido La capa de acceso a datos la siguiente:
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;
}
}
Información adicional: VS 2012, framework 4.5, entidad framework 5.0.0.0 y para EF 4 funciona perfectamente (sin el método OnModelCreating).
Puede escribir este código en el método OnModelCreating:
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
Si no desea que EF cree tablas y administre la coherencia entre su modelo y la base de datos, simplemente use esto al inicio de su aplicación:
Database.SetInitializer<CountryContext>(null);
Usando LINQ en EF 6.0:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var conventions = new List<PluralizingTableNameConvention>().ToArray();
modelBuilder.Conventions.Remove(conventions);
}