Por que o EF 5.x usa nome plural para tabela?

Eu tive algumas experiências no framework ORM, como o Hibernate, até mesmo o Entity Framework 3.0.

Por padrão, essas estruturas usam nome singular para tabela. Por exemplo, a classe User irá mapear para a tabela User.

Mas quando eu migro para o EF 5.x usando o Visual Studio 2012, ele usa o nome plural e causa muitos erros, a menos que eu mapeie manualmente essa classe usandoTableAttribute Como:

[Table("User")]
public class User {
    // ...
}

SemTableAttribute, se eu tiver umDbContext como abaixo:

public CustomContext : DbContext {
    // ...
    public DbSet<User> Users { get; set; }
}

Então chamando:

var list = db.Users.ToList();

O sql gerado se parece com:

Select [Extent1].[Username] From [Users] as [Extent1]

Portanto, o erro ocorrerá porque eu não tenho nenhuma tabela nomeadaComercial. Além disso, refiro-me a tabelas de nomes de forma singular a plural. Você pode ver porqueesse link

Gostaria de saber por que a Microsoft implementou o EF 5.x dessa maneira, e não o mesmo, com o EF 3.0?

Atualizada:

Podemos dizer que a EF não usa o nome pluralizado usando este código na classe de contexto:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

    base.OnModelCreating(modelBuilder);
}

Mesmo se a ferramenta EF gerar nome pluralizado, ela deve manter os mapeamentos no banco de dados original, não deveria? Porque alguns usuários podem querer alterar alguns nomes de campos em suas classes. O EF 3.0 funciona bem, mas o EF 5.x não funciona.

Gente, você pode me dar uma razão, por favor!

questionAnswers(2)

yourAnswerToTheQuestion