MySQL ADO.NET 開発者ガイド - Entity Framework ASP.NET アプリケーション

この記事では、ASP.NET Core Razor Pages アプリケーションで Entity Framework(EF)Core を使用する方法を解説します。CData ADO.NET Provider for MySQL を使用して、MySQL データの表示、追加、削除、更新を行うページを作成していきます。

NOTE: この記事では MySQL データを例に説明していますが、ここで紹介する手法は CData がサポートする 270 以上のデータソースすべてに適用できます。

前提条件

このガイドでは、以下のツールとソフトウェアが必要です。

ガイド

  1. アプリケーションの作成
    1. Visual Studio を開き、「ASP.NET Core Web App (Razor Pages)」プロジェクトを新規作成します。
    2. プロジェクト名を「WebAppMySQL」に設定します。このガイドのコードをコピー&ペーストする場合、名前空間が一致するようにこの名前を使用してください。設定後、「Next」をクリックします。
    3. 次の画面で「.NET 8.0 (Long-term support)」を選択し、「Create」をクリックします。
  2. Entity Framework のインストールと必要なアセンブリへの参照追加
    1. NuGet パッケージマネージャーを使用して、以下のパッケージをプロジェクトに追加します。
      1. Microsoft.EntityFrameworkCore
      2. Microsoft.EntityFrameworkCore.Design
      3. Microsoft.EntityFrameworkCore.SqlServer
      4. Microsoft.EntityFrameworkCore.Tools
    2. System.Data.CData.MySQL.dll への参照を追加します。このファイルは、インストールディレクトリ(例: "C:\Program Files\CData\CData ADO.NET Provider for MySQL 2024\")の lib -> net8.0 サブフォルダーにあります。
    3. CData.EntityFrameworkCore.MySQL.dll への参照を追加します。このファイルは、インストールディレクトリの lib -> net8.0 -> EFCORE80 サブフォルダーにあります。
    4. 付属のライセンスファイル(.lic)をプロジェクトに追加します。ソリューションエクスプローラーでプロジェクトを右クリックし、「追加」>「既存の項目」から System.Data.CData.MySQL.lic を選択します(インストールディレクトリの lib -> netstandard2.0 サブフォルダーにあります)。最後に、ライセンスファイルを右クリックして、Copy to Output Directory プロパティを Copy if newer に設定します。
    5. プロジェクトをビルドして、EF Core を使用するためのセットアップを完了します。
  3. データモデルのリバースエンジニアリング(スキャフォールディング)

    スキャフォールディングはパッケージマネージャーコンソール(PMC)を使用して実行します。PMC を開き、以下のコマンドを実行して Models フォルダーにスキーマをスキャフォールディングします。このコマンドにより、利用可能なすべてのテーブル/ビューのクラスが自動的に構築されます。また、DbContext を継承し、データソース内のテーブルを表す DbSet プロパティを公開するコンテキストクラスも作成されます。

    Scaffold-DbContext "Authscheme=Password;Server=YourServer;Port=YourPort;User=YourUser;Password=YourPassword;Database=YourDatabase;Tables=customers;" CData.EntityFrameworkCore.MySQL -OutputDir Models -Context MySQLContext

    Note: Tables プロパティを設定することで、接続してモデル化するテーブルの数を制限しています。これにより、利用可能なすべてのテーブルやビューではなく、MySQL 接続の Customer テーブルのみがモデル化されます。

    CData MySQL ADO.NET Provider の接続プロパティの詳細については、CData ドキュメントページをご覧ください: CData ADO.NET Provider for MySQL ドキュメント

  4. Customers 用の Razor ページを追加
    1. プロジェクトの「Pages」フォルダー内に「Customers」サブフォルダーを新規作成します。
    2. ソリューションエクスプローラーで新しい「Customers」フォルダーを右クリックし、「追加」>「Razor ページ...」を選択します。
    3. Razor ページダイアログで「Razor Page using Entity Framework (CRUD)」を選択し、「Add」をクリックします。
    4. 「Razor Page using Entity Framework (CRUD)」ダイアログで以下を設定します。
      1. 「Model class」を Customer エンティティ「Customer」に設定します。
      2. 「DbContext class」をデータベースコンテキスト「MySQLContext」に設定します。
    5. 「Add」をクリックして新しいページを作成します。Pages/Customers フォルダーに Razor ページが作成されます。
  5. appsettings.json ファイルに接続文字列を追加

    appsettings.json ファイルに、MySQL 接続用の接続文字列を追加します。以下はコード例です。

    { "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": {"MySQLContext": "Authscheme=Password;Server=YourServer;Port=YourPort;User=YourUser;Password=YourPassword;Database=YourDatabase;Tables=customers;" } }
  6. Program.cs でコンテキストを登録

    Program.cs ファイルで、コンテキストクラスを依存性注入コンテナーに登録します。以下はコード例です。

    using WebAppMySQL.Models; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); // サービスをコンテナに追加 builder.Services.AddRazorPages(); builder.Services.AddDbContext(options => options.UseMySQL(builder.Configuration.GetConnectionString("MySQLContext")));
  7. Customers リストのレイアウトを調整

    使いやすさのために、Customers ページのレイアウトを調整して、Customer の編集や削除のコントロールにアクセスしやすくします。デフォルトでは、これらのコントロールを含むカラムが最後に表示されるため、Index.cshtml ファイルのコードを調整して、このカラムを最初に表示するようにします。以下のコードでは、カラムの空のヘッダーを追加し、Edit と Delete のコントロールを最初のカラムに移動しています。調整例は以下のとおりです。

    @page @model WebAppMySQL.Pages.Customer.IndexModel @{ ViewData["Title"] = "Index"; }

    Index

    Create New

    … … @foreach (var item in Model.Customer) { … … }
    Edit | Delete
  8. Razor ページをレイアウトに追加

    Razor ページの設定が完了したら、プロジェクト作成時に用意されていた汎用ページを削除し、_Layout.cshtml ファイルに新しいページへのリンクを追加します。Pages/Shared/_Layout.cshtml ファイルの現在のコードを削除し、以下のコードを貼り付けます。調整例は以下のとおりです。

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>@ViewData["Title"] - WebAppMySQL</title> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /> <link rel="stylesheet" href="~/WebAppMySQL.styles.css" asp-append-version="true" /> </head> <body> <header> <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> <div class="container"> <a class="navbar-brand" asp-area="" asp-page="/Index">WebAppMySQL</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> <ul class="navbar-nav flex-grow-1"> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Customers/Index">Customers</a> </li> </ul> </div> </div> </nav> </header> <div class="container"> <main role="main" class="pb-3"> @RenderBody() </main> </div> <footer class="border-top footer text-muted"> <div class="container"> &copy; 2025 - WebAppMySQL - <a asp-area="" asp-page="/Privacy">Privacy</a> </div> </footer> <script src="~/lib/jquery/dist/jquery.min.js"></script> <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="~/js/site.js" asp-append-version="true"></script> @await RenderSectionAsync("Scripts", required: false) </body> </html>
  9. アプリケーションの実行

    すべての設定が完了したら、MySQL に接続されたアプリケーションを実行できます。まず、ソリューションをビルドし、緑色の再生ボタンをクリックしてアプリケーションを起動します。アプリケーションのホーム画面が開きます。「Customers」タブをクリックすると、以下のように Customer のリストが表示されます。

    同じページで Create New ボタンを選択すると、MySQL テーブルに新しい Customer を作成するページが開きます。

    また、同じページで Customer の横にある Edit または Delete ボタンを選択すると、選択した Customer の編集や削除を行うページが開きます。

.NET アプリケーションでシームレスなデータ接続を実現

MySQL データの可能性を最大限に引き出したいとお考えですか?CData MySQL ADO.NET Provider を使えば、.NET アプリケーションと MySQL データをシームレスに統合できます。CData ADO.NET Provider for MySQL Community License を使用すると、使い慣れた SQL を通じて、個人の .NET プロジェクトでデータにアクセスするためのライブラリを永久に無料で利用できます。今すぐライセンスを取得して、MySQL に接続されたアプリケーションの構築を始めましょう!