Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O Entity Framework cria um nome de tabela plural, mas a exibição espera um nome de tabela singular?


Então eu desisti de tentar fazer do jeito que eu achava que deveria ser feito e removi a pluralização de uma vez. Eu realmente não sei ao certo, mas suponho que o problema tenha a ver com o suporte do conector mysql .net do EF. Aqui está o que eu fiz.

Primeiro, houve um bug no meu método ApplicationStart:
//WRONG
//Database.SetInitializer(new DropCreateDatabaseAlways<myDB>());
Database.SetInitializer(new myDBInitializer());

Segundo, parei de chamar a implementação base OnModelCreating que não está listada no código original, pois só a implementei conforme a sugestão de jgauffin:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //DONT DO THIS ANYMORE
    //base.OnModelCreating(modelBuilder);
    //modelBuilder.Entity<Vote>().ToTable("Votes")
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

Terceiro, eu li em alguns posts que o MySQL .net Connector não deixa o EF realmente CRIAR um banco de dados, então eu criei inicialmente o banco de dados em branco. Isso parece não ser mais o caso do conector 6.4.4+ e, desde que o usuário da sua string de conexão tenha a capacidade de criar novos bancos de dados, ele funcionará melhor se um não existir inicialmente.

Uma vez, eu fiz todos os itens acima, parecia funcionar. Então agora eu posso pelo menos seguir em frente. Espero que possamos descobrir a causa da discrepância plural/singular no futuro.

Obrigado a todos pelo seu tempo e esforço.