Как мне придать сингулярность моим таблицам в EF Code First? - PullRequest
56 голосов
/ 25 января 2011

Я предпочитаю использовать единственные существительные при именовании таблиц в моей базе данных.Однако сначала в коде EF сгенерированные таблицы всегда являются множественными.Мои наборы данных DbSets являются множественными, что, как я полагаю, именно там, где EF генерирует имена, но я не хочу выделять эти имена в единственном числе, так как считаю, что более целесообразно использовать их множественное число в коде.Я также попытался изменить настройку, но безрезультатно.

Есть идеи?Вот мой код и спасибо.

MyObjectContext.cs

public class MyObjectContext : DbContext, IDbContext
{
     public MyObjectContext(string connString) : base(connString)
     {
     }
     public DbSet<Product> Products {get;set;}
     public DbSet<Category> Categories {get;set;}
     //etc.

     protected override void OnModelCreating(ModelBuilder modelBuilder)
     {
        modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
     }
}

Ответы [ 3 ]

89 голосов
/ 25 января 2011

Вы удалили неправильное соглашение ( PluralizingEntitySetNameConvention ) для этой цели. Просто замените метод OnModelCreating на приведенный ниже, и все будет хорошо.

using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db;
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{    
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

С Entity Framework 6 в вашем файле, который наследуется от DbContext:

using System.Data.Entity.ModelConfiguration.Conventions;

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
3 голосов
/ 29 июля 2015

Вы также можете изменить значение свойства:

В меню Сервис выберите Параметры. В диалоговом окне «Параметры» разверните Инструменты базы данных. Нажмите O / R Designer. Установите параметр «Плюрализация имен» на «Enabled = False», чтобы установить конструктор O / R таким образом, чтобы он не изменял имена классов. Установите параметр «Плюрализация имен» на «Включено = Истина», чтобы применить правила множественного числа к именам классов объектов, добавляемых в конструктор O / R.

1 голос
/ 24 июня 2014

Расположение определения PluralizingTableNameConvention перемещено в:

using System.Data.Entity.ModelConfiguration.Conventions;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...