Я занимаюсь разработкой EF Code First для существующей базы данных.Поскольку мне передали схему и некоторые имена таблиц не идеальны, я хотел бы назвать определенные классы сущностей иначе, чем базовая таблица, и выполнить сопоставление в OnModelCreating.
Похоже, это не работает, если имя класса сущности конфликтует с именем существующей таблицы, даже если я переназначаю их в коде.
Учитывая эти (составленные для этого примера) классы сущностей:
Я пытаюсь выполнить следующие сопоставления в OnModelCreating:
modelBuilder.Entity<Gadget>.ToTable("Sprocket");
modelBuilder.Entity<Widget>.ToTable("Gadget");
Во время выполнения это приводит к следующей ошибке:
System.InvalidOperationException: типы сущностей «Widget» и «Gadget» не могут совместно использовать таблицу «Гаджет», потому что они не принадлежат к одной иерархии типов или не имеют действительного отношения внешнего ключа «один к одному» с совпадающими первичными ключами между ними.
Это не имеет смысла, поскольку я отображаю сущность гаджета вдали от таблица гаджетов, но кажется, что некоторое сопоставление происходит автоматически, хотя я указываю это явно.
Каково объяснение такого поведения и можно ли его обойти?