Почему EF 5.x использует имя множественного числа для таблицы?

У меня был некоторый опыт работы со средой ORM, такой как Hibernate, и даже Entity Framework 3.0.

По умолчанию эти структуры используют единственное имя для таблицы. Например, класс User будет сопоставлен с таблицей User.

Но когда я перехожу на EF 5.x с помощью Visual Studio 2012, он использует множественное имя и вызывает много ошибок, если я вручную не сопоставлю этот класс с помощьюTableAttribute как:

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

БезTableAttributeесли у меня естьDbContext как показано ниже:

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

Тогда звоню:

var list = db.Users.ToList();

Сгенерированный sql выглядит так:

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

Поэтому ошибка произойдет, потому что у меня нет таблицы с именемпользователей, Кроме того, я имею в виду таблицы имен в единственном числе во множественном числе. Вы можете понять, почему вэта ссылка

Интересно, почему Microsoft реализует EF 5.x таким образом, а не EF 3.0?

Обновлено:

Мы можем сказать EF не использовать множественное имя, используя этот код в классе контекста:

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

    base.OnModelCreating(modelBuilder);
}

Даже если инструмент EF генерирует множественное имя, он должен сохранять сопоставления с исходной базой данных, не так ли? Потому что некоторые пользователи могут захотеть изменить несколько имен полей в своем классе. EF 3.0 работает хорошо, а EF 5.x - нет.

Ребята, подскажите пожалуйста причину!

Ответы на вопрос(2)

Ваш ответ на вопрос