PostgreSQL ADO.NET 開発ガイド - Entity Framework ASP.NET アプリ
この記事では、ASP.NET Core Razor Pages アプリで Entity Framework(EF)Core を使用するガイドを提供します。CData ADO.NET Provider for PostgreSQL を使用して、PostgreSQL のデータを表示、追加、削除、更新するページを作成します。
注意: この記事では PostgreSQL データを使用していますが、同じ手法は CData がサポートする270以上のデータソースに適用できます。
前提条件
このガイドでは、以下が必要です:
- Visual Studio 2022
- .NET 8.0
- CData ADO.NET Provider for PostgreSQL
- サンプル PostgreSQL データベース
ガイド
-
アプリケーションの作成
-
Visual Studio を開き、「ASP.NET Core Web App(Razor Pages)」プロジェクトを新規作成します。
-
プロジェクト名を「WebAppPostgreSQL」にします。これにより、このガイドからコードをコピー&ペーストした場合に名前空間が一致します。設定したら「次へ」をクリックします。
-
次のページで「.NET 8.0(長期サポート)」を選択し、「作成」をクリックします。
-
Visual Studio を開き、「ASP.NET Core Web App(Razor Pages)」プロジェクトを新規作成します。
-
Entity Framework のインストールと必要なアセンブリへの参照を追加
-
NuGet パッケージマネージャーを使用して、以下のパッケージをプロジェクトに追加します:
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools
- インストールディレクトリの lib -> net8.0 サブフォルダ(例:「C:\Program Files\CData\CData ADO.NET Provider for PostgreSQL 2024\」)にある System.Data.CData.PostgreSQL.dll への参照を追加します。
- インストールディレクトリの lib -> net8.0 -> EFCORE80 サブフォルダにある CData.EntityFrameworkCore.PostgreSQL.dll への参照を追加します。
- 付属のライセンスファイル(.lic)をプロジェクトに追加します。ソリューションエクスプローラーでプロジェクトを右クリックし、追加 -> 既存の項目 -> System.Data.CData.PostgreSQL.lic(インストールディレクトリの lib -> netstandard2.0 サブフォルダにあります)を選択します。最後に、ライセンスファイルを右クリックして、出力ディレクトリにコピー プロパティを 新しい場合はコピーする に設定します。
-
プロジェクトをビルドして、EF Core を使用するためのセットアップを完了します。
-
NuGet パッケージマネージャーを使用して、以下のパッケージをプロジェクトに追加します:
-
データモデルのリバースエンジニアリング(スキャフォールディング)
スキャフォールディングはパッケージマネージャーコンソール(PMC)を使用して実行します。PMC を開き、以下のコマンドを使用してスキーマを Models フォルダにスキャフォールディングします。このコマンドは、利用可能なすべてのテーブル/ビューのクラスを自動的に構築します。また、DbContext を拡張し、データソース内のテーブルを表す DbSet プロパティを公開するコンテキストクラスも作成します:
Scaffold-DbContext "Authscheme=Password;Server=YourServer;Port=YourPort;User=YourUser;Password=YourPassword;Database=YourDatabase;Tables=HappinessData;" CData.EntityFrameworkCore.PostgreSQL -OutputDir Models -Context PostgreSQLContext注意: Tables プロパティを設定して、接続してモデル化するテーブルの数を制限しています。これにより、利用可能なすべてのテーブルとビューではなく、PostgreSQL 接続から HappinessData テーブルのみをモデル化します。
CData PostgreSQL ADO.NET Provider の接続プロパティの詳細については、CData ドキュメントページをご覧ください:CData PostgreSQL ADO.NET Provider ドキュメント
-
HappinessData 用の Razor Page を追加
- プロジェクトの「Pages」フォルダに新しい「HappinessData」サブフォルダを作成します。
- ソリューションエクスプローラーで新しい「HappinessData」フォルダを右クリックし、「追加」>「Razor ページ...」を選択します。
- Razor ページダイアログで、「Entity Framework を使用する Razor ページ(CRUD)」を選択し、「追加」をクリックします。
-
「Entity Framework を使用する Razor ページ(CRUD)」ダイアログで:
- 「モデルクラス」を HappinessData エンティティ「HappinessDatum」に設定
- 「DbContext クラス」をデータベースコンテキスト「PostgreSQLContext」に設定
-
「追加」をクリックして新しいページを作成します。Pages/HappinessData フォルダに Razor ページが作成されます:
-
appsettings.json ファイルに接続文字列を追加
appsettings.json ファイルに、PostgreSQL 接続用の接続文字列を追加する必要があります。以下はコードの例です:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": {"PostgreSQLContext": "Authscheme=Password;Server=YourServer;Port=YourPort;User=YourUser;Password=YourPassword;Database=YourDatabase;Tables=HappinessData;"} } -
Program.cs でコンテキストを登録
Program.cs ファイルで、コンテキストクラスを依存性注入コンテナに登録する必要があります。以下はコードの例です:
using WebAppPostgreSQL.Models; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorPages(); builder.Services.AddDbContext<PostgreSQLContext>(options => options.UsePostgreSQL(builder.Configuration.GetConnectionString("PostgreSQLContext"))); -
HappinessData 一覧のレイアウトを調整
使いやすさのため、HappinessData ページのレイアウトを調整して、国のエントリを編集または削除するコントロールにアクセスしやすくします。デフォルトでは、これらのコントロールを含むカラムは最後に表示されるため、Index.cshtml ファイルのコードを調整して、このカラムを最初に表示されるようにします。このコードでは、カラムの空のヘッダーを追加し、Edit と Delete コントロールを最初に表示されるカラムに移動しました。
@page @model WebAppPostgreSQL.Pages.HappinessData.IndexModel @{ ViewData["Title"] = "Index"; }Index
@foreach (var item in Model.HappinessData) { ... ... }Edit | Delete ... ... -
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"] - WebAppPostgreSQL</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="~/WebAppPostgreSQL.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">WebAppPostgreSQL</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="/HappinessData/Index">Happiness Data</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"> © 2025 - WebAppPostgreSQL - <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> -
アプリケーションの実行
すべての設定が完了したら、PostgreSQL に接続された完成したアプリケーションを実行できます。まずソリューションをビルドし、緑色の再生ボタンでアプリケーションを起動します。アプリケーションのホーム画面が開いたら、以下のように Happiness Data タブをクリックして国の一覧を表示できます:
同じページで、Create New ボタンを選択して、PostgreSQL テーブルに新しいエントリを作成するページを開きます:
また、同じページで、エントリの横にある Edit または Delete ボタンを選択すると、選択したエントリを編集または削除できるページが開きます:
.NET アプリケーションでシームレスなデータ接続を実現
PostgreSQL データの可能性を最大限に引き出したいとお考えですか?CData PostgreSQL ADO.NET Provider を使えば、.NET アプリケーションと PostgreSQL データをシームレスに統合できます。CData ADO.NET Provider for PostgreSQL コミュニティライセンスでは、個人の .NET プロジェクトでデータにアクセスするための永久無料ライブラリを、使い慣れた SQL で利用できます。ライセンスをリクエストして、今すぐ PostgreSQL 連携アプリの構築を始めましょう!