Entity Framework - CTP4 - Code First - Como desativar a pluralização automática?
O nome da minha entidade é "Contato" e o nome da minha tabela é "Contato". No entanto, o suporte à pluralização padrão está fazendo o EF4 procurar uma tabela chamada "Contatos". Alguém tem alguma idéia de como desativar o suporte à pluralização?
este post tem alguns detalhes sobre o suporte à pluralização. Mas ainda não me dá uma resposta.
Eu vejo o seguinte texto emesta postar. Primeiro de tudo, eu não sei qual arquivo .tt físico eu preciso fazer essa alteração. Além disso, desejo desativar esse recurso apenas para um aplicativo e não para todos.
O gerador de código no T4 Toolbox tem a pluralização ativada por padrão no Visual Studio 2010. Se você precisar gerar o DAL sem pluralização, talvez por motivos de compatibilidade, poderá desativar essa opção adicionando a seguinte linha ao arquivo .tt antes O método generator.Run () é chamado.
C #
generator.Pluralize = false;
VB
generator.Pluralize = False
*****ATUALIZAR*****
A seguir está o código que eu uso e recebo um erro abaixo: -
Contato
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");
}
}
O 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());
}
E recebo o seguinte erro em "context.Contact.Add (contact);": -
System.InvalidOperationException: o modelo que suporta o contexto 'AddressBook' foi alterado desde que o banco de dados foi criado. Exclua / atualize manualmente o banco de dados ou chame Database.SetInitializer com uma instância IDatabaseInitializer. Por exemplo, a estratégia RecreateDatabaseIfModelChanges excluirá e recriará automaticamente o banco de dados e, opcionalmente, o propagará com novos dados. em System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExists1.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 () em System.Data.Entity.DbSet1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet
1.Adicione (entidade TEntity) ao CodeFirst.Client.Program.Main (String [] args) em E: \ Ashish \ Research \ VS Solutions \ EntityFramework \ CodeFirstApproach_EF_CTP4 \ CodeFirst.Client \ Program.cs: linha 35
Tenho certeza de que estou cometendo um erro estúpido em algum lugar, apenas incapaz de descobrir. Alguém poderia, por favor, fornecer algumas instruções?
RESPONDA Com a ajuda de Pault, descrevi esse problema e a soluçãoaqui.