Entity Framework Core でテーブルを削除するコードを紹介します。
概要
Entity Framework Core でテーブルを削除(ドロップ)する場合には、DROP TABLEのSQL文を実行します。
プログラム例
事前準備
テーブルを作成します。SQL文を実行して作成、またはプログラムから作成します。テーブルの作成手順は
こちらの記事も参照してください.
UI
下図のフォームを作成します。[DROP TABLE SQL]ボタン(button3)を利用します。
コード
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
namespace EntityFrameworkCoreOperateTableSqlServer
{
public class MyDbContext : DbContext
{
public DbSet<MyTable1Rec> MyTable1 { get; set; }
public DbSet<MyTable2Rec> MyTable2 { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlServer("Data Source=(DBホスト名またはIPアドレス);Initial Catalog=iPentecSandBox3;User ID=(ユーザーID);Password=(パスワード);Encrypt=False");
}
}
}
using System;
namespace EntityFrameworkCoreOperateTableSqlServer
{
public class MyTable1Rec
{
public int id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public string Code { get; set; }
public int Price { get; set; }
}
}
using System;
using System.ComponentModel.DataAnnotations;
namespace EntityFrameworkCoreOperateTableSqlServer
{
public class MyTable2Rec
{
[Key]
public int id { get; set; }
public int ProductId { get; set; }
public int Stock { get; set; }
}
}
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage;
namespace EntityFrameworkCoreCreateTableSqlServer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
MyDbContext cx = new MyDbContext();
cx.Database.ExecuteSql($"DROP TABLE MyTable1;DROP TABLE MyTable2;");
textBox1.Text += "DROP TABLE SQLを実行しました。\r\n";
}
}
}
解説
データベースコンテキストやテーブルのモデルクラスについては
こちらの記事を参照してください。
[DROP TABLE SQL]のbutton3をクリックすると以下のコードを実行します。
MyDbContext cx = new MyDbContext();
DatabaseプロパティのExecuteSql() メソッドを呼び出し、DROP TABLE SQL文を実行します。詳しくは
こちらの記事を参照してください。
cx.Database.ExecuteSql($"DROP TABLE MyTable1;DROP TABLE MyTable2;");
SQLを実行した旨のメッセージをテキストボックスに表示します。
textBox1.Text += "DROP TABLE SQLを実行しました。\r\n";
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
データベースサーバーにはテーブルが存在している状態です。
[DROP TABLE SQL]ボタンをクリックします。テキストボックスにSQL文が実行された旨のメッセージが表示されます。
データベースサーバーを確認すると、テーブルが削除されたことが確認できます。
補足:再実行した場合
テーブル削除後の状態で、再度[DROP TABLE SQL]ボタンをクリックするとテーブルが存在しないため、次の例外が発生します。
エラーメッセージ
Microsoft.Data.SqlClient.SqlException
HResult=0x80131904
Message=テーブル 'MyTable1' を 削除 できません。存在しないか、権限がありません。
テーブル 'MyTable2' を 削除 できません。存在しないか、権限がありません。
Source=Core Microsoft SqlClient Data Provider
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2023-05-08
作成日: 2022-11-27