Вопрос:

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

entity-framework ef-code-first

26457 просмотра

3 ответа

1783 Репутация автора

Я предпочитаю использовать единственные существительные при именовании таблиц моей базы данных. Однако сначала в коде 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>();
     }
}
Автор: trevorc Источник Размещён: 25.01.2011 05:02

Ответы (3)


89 плюса

30634 Репутация автора

Решение

Вы удалили неправильное соглашение ( 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>();
}
Автор: Morteza Manavi Размещён: 25.01.2011 06:06

1 плюс

408 Репутация автора

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

using System.Data.Entity.ModelConfiguration.Conventions;

Автор: Mythlandia Размещён: 24.06.2014 05:02

3 плюса

31 Репутация автора

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

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

Автор: Francisco Размещён: 29.07.2015 02:23
Вопросы из категории :
32x32