Правило каскадного удаления в EF 4.1 Code First при использовании Shared Primary Key Association

Я реализовал двунаправленное отношение 1:1 на основе этого ответа:

Primary /Foreign Key в Entity Framework

Я определяю двунаправленное отношение таким образом:

public class Student
{   
    public virtual int StudentId { get; set; }
    public virtual Anamnesis Anamnesis { get; set; }

    . . .
}

public class Anamnesis
{
    [Key, ForeignKey("Student")]
    public int AnamnesisId { get; set; }

    public virtual Student Student { get; set; }

    . . .
}

где, Student - главная сущность, а Anamnesis - сущность, которая разделяет PK.

Теперь я хотел бы, чтобы созданное отношение имело правило удаления = CASCADE. На самом деле, создаваемое отношение имеет Delete Rule = NO ACTION, как видно на следующем рисунке:

enter image description here

Если я вручную удалю это отношение в окне Table Properties и добавлю другое отношение с Delete Rule = CASCADE, код работает так, как я ожидаю, позволяя мне удалить Student и его общий Anamnesis, имеющий тот же ID.

Итак, вот мой вопрос:

Есть ли способ использовать Data Annotation (не Fluent API) в моем классе, чтобы я получил отношение с правилом удаления CASCADE? Я бы предпочел использовать Data Annotation, но если это невозможно, я был бы счастлив получить какой-нибудь код Fluent API, который заставит это работать.

ПРИМЕЧАНИЕ

Я попробовал код Fluent API, который показан в этом сообщении. Он не работает в моем случае, когда у меня есть двунаправленные свойства.

7
задан Community 23 May 2017 в 11:48
поделиться