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

Множественные имена таблиц являются стандартным соглашением в 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 ответ

Решение

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);
    }

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

Чтобы воспользоваться услугой PluralizationService, вам нужно будет сослаться на System.Data.Entity.Design сборка.

Другие вопросы по тегам