Entity Framework генерирует миграцию, столбец переименовывается, а не добавляется - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь обновить сущность, чтобы самостоятельно ссылаться на себя, чтобы создать отношения родитель-потомок.

Обновленная сущность

public class Organisation : FullAuditedEntity<long>
{
    ...
    public virtual long? ParentOrganisationId { get; set; }

    [ForeignKey(nameof(ParentOrganisationId))]
    public virtual Organisation ParentOrganisation { get; set; }

    [InverseProperty(nameof(ParentOrganisation))]
    public virtual ICollection<Organisation> SubOrganisations { get; set; }
    ...
}

Но проблема возникает, когда я пытаюсь запуститьмиграция в БД (Update-Database), в которой выдается следующая ошибка:

EXECUTE sp_rename @objname = N'dbo.Organisations.OrganisationId', @newname = N'ParentOrganisationId', @objtype = N'COLUMN'

Либо параметр @objname является неоднозначным, либо заявленный @objtype (COLUMN) неверен.

Единственное, что я могу сделать, - это обновить файл миграции напрямую, добавить столбец и удалить переименованное мной имя.Кажется, работает нормально.

//RenameColumn(table: "dbo.Organisations", name: "OrganisationId", newName: "ParentOrganisationId");
AddColumn("dbo.Organisations", "ParentOrganisationId", c => c.Long(nullable: true));

Хотя я думаю, что это сработает, мне любопытно, почему в сгенерированной миграции используется RenameColumn вместо AddColumn.

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

Заранее спасибо.

Я отправлю ответ, если узнаю, почему это происходит.

Сообщите мне, если потребуется какая-либо дополнительная информация, я обновлю соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...