Подтвердить что ты не робот

Первый код структуры сущностей - изменение имени таблицы

Я хочу сначала изменить имя одной из моих таблиц, сгенерированных с использованием кода Entity Framework.

Я уже создал базу данных, но теперь хочу изменить имя. Я обновил все ссылки на таблицу "Metadatas" до "Metadata" в моем проекте. Но таблица, которая создается в базе данных, по-прежнему остается "метадатами". Я сбросил и заново создал базу данных, но это тоже не работает. Также не используется атрибут TableAttribute. Что я должен делать?

Спасибо.

[Table("Metadata")]
public class Metadata 
{
    [Required, Key]
    public int MetadataId { get; set; }

    [Required, ScaffoldColumn(false)]
    public int DocumentId { get; set; }

    [Required, StringLength(250), DataType(DataType.Text)]
    public string Title { get; set; }

...

4b9b3361

Ответ 1

Здесь у вас есть два варианта -

Аннотации данных:

//Changing database table name to Metadata
[Table("Metadata")]
public class Metadata 
{
  [Required, Key]
  public int MetadataId { get; set; }

  [Required, ScaffoldColumn(false)]
  public int DocumentId { get; set; }

  [Required, StringLength(250), DataType(DataType.Text)]
  public string Title { get; set; 
}

или у нас есть Fluent Api:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  //Changing Database table name to Metadata
  modelBuilder.Entity<Metadata>()
      .ToTable("Metadata");
}

Использование Fluent Api является предпочтительным вариантом, если вы хотите, чтобы ваша модель домена оставалась незагроможденной.

Просто добавив к этому, если вы только хотите удалить плюрализацию имен таблиц, вы можете переопределить способность EF сделать это со следующей строкой кода:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}