EF Core - внешний ключ к той же таблице с настраиваемым именем столбца с переопределенным поведением onDelete - PullRequest
0 голосов
/ 22 января 2020

У меня есть один объект «Пользователь», в котором пользователи могут выполнять несколько ролей. Таким образом, одной из таких ролей является LineManager, и я отслеживаю, назначен ли какой-либо пользователь LineManager путем сверки с LineManagerId (который является идентификатором пользователя), вот сущность User:

public class User
{
    public Guid ID { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    [ForeignKey("LineManager")]
    public Guid? LineManagerId { get; set; }

    public virtual User LineManager { get; set; }
}

Изменения применяются и внешний ключ прекрасно создается в базе данных с созданной миграцией по умолчанию. Но вот моя проблема, когда я переопределяю миграцию по умолчанию с параметром onDelete, равным null, как показано ниже (для метода OnModelCreating):

modelBuilder.Entity<User>().HasOne(u => u.LineManager)
.WithMany()
.HasForeignKey(e => e.LineManagerId)
.OnDelete(DeleteBehavior.SetNull);

При применении миграции / обновления базы данных я получаю следующую ошибку:

Введение ограничения FOREIGN KEY 'FK_Users_Users_LineManagerId' в таблице 'Users' может привести к циклам или нескольким каскадным путям. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY. Не удалось создать ограничение или индекс. Смотрите предыдущие ошибки

Любая помощь очень ценится.

...