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