.NET EF 6 Плюрализация с префиксом в именах таблиц

1

Названия таблиц множественных таблиц по умолчанию являются стандартными в EF. но когда я добавил префикс, я не могу сделать имена более многочисленными, к сожалению. Есть идеи?

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
  modelBuilder.Types()
              .Configure(entity => entity.ToTable("MyPrefix_" + entity.ClrType.Name));

  modelBuilder.Conventions.Add<PluralizingTableNameConvention>();
  base.OnModelCreating(modelBuilder);
}
  • 1
    Избегайте использования плюрализации ... Вместо этого используйте [Table] attibute или HasName
  • 0
    Да уж. Никогда не видел причины для этого. То, что EF имеет не слишком умные значения по умолчанию, не означает, что вы должны их использовать.
Теги:
entity-framework
asp.net-mvc
plural

1 ответ

3
Лучший ответ

В PluralizingTableNameConvention используется PluralizationService, который можно использовать где угодно. Поэтому вы можете использовать его в своем конфигурационном коде.

Вот пример использования модели "Человек", которая должна быть плюрализована для "Люди":

    public DbSet<Person> Persons { get; set; }

    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        var serv = PluralizationService.CreateService(new System.Globalization.CultureInfo("en-us"));

        modelBuilder.Types()
         .Configure(entity => entity.ToTable("MyPrefix_" + serv.Pluralize(entity.ClrType.Name)));

        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        base.OnModelCreating(modelBuilder);
    }

После запуска этого кода он правильно плюрализует модель Person для "MyPrefix_People" в базе данных.

Для использования функции PluralizationService вам необходимо обратиться к сборке System.Data.Entity.Design.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню