shuhelohelo’s blog

Xamarin.Forms多めです.

DbContext内のすべてのDbSetに一括でDeleteBehaviorを設定する

youtu.be

ASP.NET Core Tutorialの動画のCascade Deleteの回の最後で紹介されてた.

f:id:shuhelohelo:20191113124255p:plain

OnModelCreatingメソッド内でDbContextの外部キーを収集し,それらのDeleteBehaviorを設定する.

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            foreach (var foreignKey in modelBuilder.Model.GetEntityTypes()
                                                   .SelectMany(e => e.GetForeignKeys()))
            {
                foreignKey.DeleteBehavior = DeleteBehavior.Restrict;
            }
        }

他にもCascadeやSetNull,ClientSetNullなどがある.