Mi nombre de entidad es "Contacto" y el nombre de mi tabla es "Contacto". Sin embargo, el soporte de pluralización predeterminado es hacer que EF4 busque una tabla llamada "Contactos". ¿Alguien tiene alguna idea sobre cómo desactivar el soporte de pluralización?Entity Framework - CTP4 - Primero el código - ¿Cómo desactivar la pluralización automática?
This publicación tiene algunos detalles sobre el soporte de pluralización. Pero aún no me da una respuesta.
Veo el siguiente texto en la publicación this. Antes que nada, no sé qué archivo .tt físico necesito para hacer este cambio. Además, quiero que esta característica se desactive solo para una aplicación y no para todas.
El generador de código en la caja de herramientas T4 tiene la pluralización activada de forma predeterminada en Visual Studio 2010. Si necesita generar el DAL sin pluralización, tal vez por razones de compatibilidad , puede activar esta opción apagado agregando la siguiente línea al archivo .tt antes de generador. Se llama al método Run().
C#
generator.Pluralize = false;VB
generator.Pluralize = False
***** ***** ACTUALIZACIÓN
A continuación se presenta el código que utilizo y me sale un error dada a continuación: -
Contacto
public class Contact
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
public DateTime AddDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
Contexto: -
public class AddressBook : DbContext
{
public DbSet<Contact> Contact { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Contact>().MapSingleType().ToTable("dbo.Contact");
}
}
El programa principal: -
using (var context = new AddressBook())
{
var contact = new Contact
{
ContactID = 10000,
FirstName = "Brian",
LastName = "Lara",
ModifiedDate = DateTime.Now,
AddDate = DateTime.Now,
Title = "Mr."
};
context.Contact.Add(contact);
int result = context.SaveChanges();
Console.WriteLine("Result :- " + result.ToString());
}
Y me sale el siguiente error en "context.Contact.Add (contacto);": -
Sistema .InvalidOperationException: el modelo que respalda el contexto 'AddressBook' ha cambiado desde que se creó la base de datos . O manualmente eliminar/actualizar la base de datos o llamar al Database.SetInitializer con una instancia de IDatabaseInitializer . Para el ejemplo , la estrategia RecreateDatabaseIfModelChanges se eliminará automáticamente y recreará la base de datos y, opcionalmente, la inicializará con los datos nuevos. en System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExists
1.InitializeDatabase(TContext context) at System.Data.Entity.Infrastructure.Database.Initialize() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.EfInternalQuery
1.Initialize() en System.Data.Entity.DbSet1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet
1.Add (TEntity entidad) en CodeFirst.Client.Program.Main (String [] args) en E: \ Ashish \ Research \ VS Solutions \ EntityFramework \ CodeFirstApproach_EF_CTP4 \ CodeFirst.Client \ Program.cs: línea 35
Estoy seguro de que estoy cometiendo un error estúpido en alguna parte, simplemente no puedo entenderlo. ¿Podría alguien dar algunas indicaciones?
RESPUESTA Con la ayuda de Pault que describe este problema y la solución here.
..como nota al margen: en mi opinión, es una buena práctica mantener los nombres de las tablas pluralizados. Representan una colección de entradas, ni una sola. –
+1 Arve, estoy de acuerdo. Sin embargo, puede comprender que no puedo cambiar el nombre de la tabla en una base de datos existente. –