Внешний ключ может вызывать циклы или несколько каскадных путей сущности каркаса ядра - PullRequest
0 голосов
/ 11 января 2019

Я использую ядро ​​Entity Framework и добавил в свой проект модель CourseOffering. Эта модель связана с другими классами, такими как Section. Я успешно создал миграцию для него. Проблема в том, когда я пытаюсь применить миграцию к базе данных. Я получаю следующую ошибку:

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

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

Модель My CourseOffering:

public class CourseOffering
{
    public int Id { get; set; }
    public Section Section { get; set; }
    public Instructor Instructor { get; set; }
    public Course Course { get; set; }
    public AcademicSemester AcademicSemester { get; set; }
    public int SectionId { get; set; }
    public int InstructorId { get; set; }
    public int? CourseId { get; set; }
    public int AcademicSemesterId { get; set; }
}

Модель моего раздела:

public class Section
{
    public int Id { get; set; }

    [Required]
    [StringLength(10)]
    public string Name { get; set; }

    public int EntranceYear { get; set; }

    public int StudentCount { get; set; }

    public Department Department { get; set; }

    public ProgramType Program { get; set; }

    public AdmissionLevel AdmissionLevel { get; set; }

    public ICollection<RoomSectionAssignment> RoomAssignments { get; set; }

    public int DepartmentId { get; set; }

    public int ProgramTypeId { get; set; }

    public int AdmissionLevelId { get; set; }

    public Section()
    {
        RoomAssignments = new Collection<RoomSectionAssignment>();
    }
}

Миграция создала все необходимые внешние ключи, но есть каскадный путь, который вызовет циклы. Я не могу понять, что вызвало цикл. Должен ли я просто отключить каскадное удаление с помощью FluentAPI?

1 Ответ

0 голосов
/ 11 января 2019

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

Да! Это подходящее решение в этом случае! Да еще да! Это абсолютно безопасно отключить каскадное удаление, используя FluentAPI, потому что FluentAPI также создаст ограничение для базы данных.

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