首页 > 解决方案 > 迁移不适用于 ON CASCADE DELETE 行为的所有外键

问题描述

我正在使用 Entity Framework Core 5,并且正在测试表关系。使用这两个类作为实体

public class Absenta
{
    public int id { get; set; }
    public DateTime dataAbsemta { get; set; }
    public bool Motivata { get; set; }

    public string UserID { get; set; }
    public ApplicationUser User { get; set; }

    public int TrainingID { get; set; }
    public Training Training { get; set; }
}

public class Training
{
    public int TrainingID { get; set; }

    [DisplayName("Training")]
    public string Name { get; set; }

    public string FilePath { get; set; }

    [DisplayName("Clasa")]
    public string NumeClasa { get; set; }

    [DisplayName("Sala")]
    public string NumeSala { get; set; }

    [DisplayName("Data incepere : ")]
    [DataType(DataType.Date)]
    public DateTime DataInceput { get; set; }

    [DisplayName("Data sfarsit  : ")]
    [DataType(DataType.Date)]
    public DateTime DataSfarsit { get; set; }

    public ICollection<Absenta> absente { get; set; }
}

这是生成的查询:

CONSTRAINT [PK_Absente] 
    PRIMARY KEY CLUSTERED ([id] ASC),
CONSTRAINT [FK_Absente_AspNetUsers_UserID] 
    FOREIGN KEY ([UserID]) REFERENCES [dbo].[AspNetUsers] ([Id]),
CONSTRAINT [FK_Absente_Traininguri_TrainingID] 
    FOREIGN KEY ([TrainingID]) REFERENCES [dbo].[Traininguri] ([TrainingID]) 
            ON DELETE CASCADE

迁移完美地工作,创建表和外键,但对于UserID外键它默认不应用ON DELETE CASCADE行为。

有没有办法可以将其设置为班级的默认值?我试图避免为每个表手动设置它。

标签: c#entity-framework-coreforeign-keystable-relationships

解决方案


想出了解决办法。您所要做的就是使用[Required]数据注释:

[Required]
public string UserID { get; set; }

public ApplicationUser User { get; set; }

推荐阅读