Как мне придать сингулярность моим таблицам в EF Code First?
Я предпочитаю использовать единственные существительные при именовании таблиц моей базы данных. Однако в коде 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 ответа
Вы удалили неправильное соглашение (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>();
}
Вы также можете изменить значение свойства:
В меню Сервис выберите Параметры. В диалоговом окне "Параметры" разверните Инструменты базы данных. Нажмите O/R Designer. Установите параметр "Плюрализация имен" на "Enabled = False", чтобы установить конструктор O / R таким образом, чтобы он не изменял имена классов. Установите параметр "Плюрализация имен" на "Включено = Истина", чтобы применить правила множественного числа к именам классов объектов, добавляемых в O/R Designer.
Расположение определения PluralizingTableNameConvention перемещено в:
using System.Data.Entity.ModelConfiguration.Conventions;