Entity Framework Core で SQL文を実行する - C#

Entity Framework Core で SQL文を実行するコードを紹介します。

概要

Entity Framework Core で SQL文を実行するには、データベースコンテキストオブジェクトのDatabaseプロパティのExecuteSql()メソッドを呼び出します。

書式

(データベースコンテキストオブジェクト).Database.ExecuteSql([実行するSQL文]);

プログラム例

事前準備

MyTable1, MyTable2 テーブルを作成します。サーバーでテーブルを作成する、または、プログラムでテーブルを作成します。 Entity Framework Coreでのテーブル作成の手順はこちらの記事を参照してください。

UI

下図のフォームを作成します。[Exec SQL]ボタン(button5)を利用します。

コード

以下のコードを記述します。
MyDbContext.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;

namespace EntityFrameworkCoreOperateTableSqlServer
{
  public class MyDbContext : DbContext
  {
    public DbSet<MyTable1Rec> MyTable1 { 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 Microsoft.EntityFrameworkCore;

namespace EntityFrameworkCoreOperateTableSqlServer
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button5_Click(object sender, EventArgs e)
    {
      MyDbContext cx = new MyDbContext();
      cx.Database.ExecuteSql($"DROP TABLE MyTable1;DROP TABLE MyTable2;");
    }
  }
}

解説

データベースコンテキストオブジェクトを取得し、Database プロパティの ExecuteSql() メソッドを呼び出します。 引数に実行するSQL文を与えます。
下記のコードでは、テーブルを削除する DROP TABLE のSQL文を実行します。
  MyDbContext cx = new MyDbContext();
  cx.Database.ExecuteSql($"DROP TABLE MyTable1;DROP TABLE MyTable2;");

実行結果

プロジェクトを実行します。下図のウィドウが表示されます。


テーブルの状態を確認します。MyTable1, MyTable2 の2つのテーブルがデータベースに存在しています。


[Exec SQL]ボタンをクリックします。SQL文が実行された旨のメッセージが表示されます。


データベースのテーブルの状態を確認します。テーブルが存在していないことが確認できます。DROP TABLEコマンドが実行され、テーブルが削除できたことがわかります。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2023-05-08
作成日: 2022-11-27
iPentec all rights reserverd.