Задать вопрос
@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.
  • Вопрос задан
  • 343 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
ANTPro
@ANTPro
Попробуй так:
public override void Up()
        {
            RenameColumn("dbo.Records", "Id", "Ident");
        }
        
        public override void Down()
        {
            RenameColumn("dbo.Records", "Ident", "Id");
        }
Ответ написан
Ваш ответ на вопрос

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

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