Задать вопрос
@Alexis17842

Миграция и Fluent Api. Как поменять стандартное имя ключевого свойства Id на другое при использовании fluent api и магриции?

Здравствуйте.

Решил опробовать Fluent api в Entity Framework'е.

Пытаюсь поменять у простого класса модели имя ключевого свойства со стандартного Id на Ident, чтобы установить новое имя ключа командой
modelBuilder.Entity().HasKey(p => new { p.Ident, p.Name });

При этом после изменения имени свойства в классе Phone с Id на Ident, как показано ниже
public class Phone
{
// public int Id { get; set; }
public int Ident { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
среда требует использовать миграцию, т.к. модель изменена.

Однако, в ходе миграции после команды update-database в консоли выдается ошибка: "Для таблицы "Phones" указано несколько столбцов идентификаторов. Допускается только один столбец идентификаторов в каждой таблице."

При использовании других правил Fluent Api, скажем, игнорирования какого-то свойства, миграция происходит нормально.

Что тут можно сделать, ну кроме того, что изначально использовать Fluetn api на "свежей" модели?

Код небольшого консольного проекта с этой ошибкой: https://github.com/Alexis1784/question.git

Использован .net 4.5 и последняя версия EF.
  • Вопрос задан
  • 347 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Пригласить эксперта
Ответы на вопрос 1
ANTPro
@ANTPro
Попробуй так:
public override void Up()
        {
            RenameColumn("dbo.Records", "Id", "Ident");
        }
        
        public override void Down()
        {
            RenameColumn("dbo.Records", "Ident", "Id");
        }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы