Entity Framework добавляет дополнительные `s` к имени таблицы в запросе времени выполнения, если добавляет` PluralizingTableNameConvention`, чтобы избежать дополнительных `s`, это выдает ошибку - PullRequest
0 голосов
/ 16 октября 2018

У меня есть простой контекст с 3 таблицами.

таблицы базы данных уже присутствуют, но с использованием первого подхода к коду.

Модель Device.cs is -

 public class Device
    {
        public System.Guid Id { get; set; }
        public string Name{ get; set; }

    }

public class sampledbContext : DbContext
    {
        public sampledbContext ()
           : base("name=sampledbContext ")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

          modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }

        public virtual DbSet<Device> Devices { get; set; }
    }

ToИзбегайте лишних s Я добавил строку выше в OnModelCreating, но она выдает ошибку -

System.InvalidOperationException: 'The model backing the 'sampledbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).'

База данных уже создана, и я пытаюсь использовать здесь первый подход кода.Я еще не сделал update-database.

Я пытался сделать Enable-Migration и Update-database, он создает таблицу с именем s, как Devices, почему?s добавлено?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Вы можете добавить DataAnnotation для описания схемы и имени таблицы к вашему классу таблицы, например:

[Table ("Device", Schema = "MySchema")]

Это даст вам больше контроля над именами.

0 голосов
/ 16 октября 2018

Вы отключили автоматическую миграцию в строке:

Database.SetInitializer<IoTSimulatordbContext>(null);

И поэтому вам потребуется вручную запустить update-database для обновления модели (вы можете запустить ее через консоль менеджера пакетов).Если у вас есть какие-либо данные в ваших таблицах, вполне вероятно, что миграция не удастся из-за возможности потери данных, в этом случае вам сначала нужно будет либо удалить все данные из таблиц, либо создать собственный сценарий миграции для обработки копирования данных.первый.Поскольку это выглядит как тест, может быть лучше перезапустить проект миграции с выключенной плюрализацией с самого начала.

...