開発者ガイド - CData ADO.NET Provider を使った Entity Framework ASP.NET アプリケーション
この記事では、ASP.NET Core Razor Pages アプリケーションで Entity Framework(EF)Core を使用する方法を説明します。CData ADO.NET Provider for CSV を活用して、CSV ファイルのデータをテーブル形式で表示するページを作成していきましょう。
注意:この記事では CSV ファイルを例として取り上げていますが、ここで紹介する原則は CData がサポートする 270以上のデータソースすべてに適用できます。
前提条件
このガイドでは、以下の環境が必要です:
- Visual Studio 2022
- .NET 8.0
- CData ADO.NET Provider for CSV
- サンプル CSV ファイル(ZIP 形式でダウンロード可能)
ガイド
-
アプリケーションを作成する
-
Visual Studio を開き、「ASP.NET Core Web App (Razor Pages)」プロジェクトを新規作成します。
-
プロジェクト名を「WebAppASPNet」に設定します。この名前を使用することで、本ガイドのコードをコピー&ペーストした際に名前空間が一致します。設定後、「Next」をクリックしてください。
-
次の画面で「.NET 8.0 (Long-term support)」を選択し、「Create」をクリックします。
-
Visual Studio を開き、「ASP.NET Core Web App (Razor Pages)」プロジェクトを新規作成します。
-
Entity Framework をインストールして必要なアセンブリへの参照を追加する
-
NuGet Package Manager を使用して、以下のパッケージをプロジェクトに追加します:
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools
- インストールディレクトリ内の lib -> net8.0 サブフォルダにある System.Data.CData.CSV.dll への参照を追加します。
- インストールディレクトリ内の lib -> net8.0 -> EFCORE80 サブフォルダにある CData.EntityFrameworkCore.CSV.dll への参照を追加します。
-
プロジェクトをビルドして、EF Core を使用するためのセットアップを完了します。
-
NuGet Package Manager を使用して、以下のパッケージをプロジェクトに追加します:
-
CSV ファイル(Account.csv)をプロジェクトに追加する
- ソリューションエクスプローラーでプロジェクトを右クリックし、「Add」>「New Folder」を選択します。
- フォルダ名を「CSVFiles」に設定し、作成したフォルダを右クリックして「Add」>「Existing Item…」を選択します。
- CSVFiles フォルダに Account.csv ファイルを追加します。
-
データモデルのリバースエンジニアリング(スキャフォールディング)
スキャフォールディングはパッケージマネージャーコンソール(PMC)を使用して実行します。PMC を開き、以下のコマンドを使用してスキーマからすべてのテーブルとビューを Models フォルダにスキャフォールドします。このコマンドにより、利用可能なテーブルやビューのクラスが自動的に構築されます。また、DbContext を継承し、データソース内のテーブルを表す DbSet プロパティを公開するコンテキストクラスも作成されます:
Scaffold-DbContext "URI=YourURI; RowScanDepth=0;UseRowNumbers=True" CData.EntityFrameworkCore.CSV -OutputDir Models -Context CSVContext-
注意事項:
- 「URI」接続プロパティには、CSV ファイルが格納されているフォルダのパスを設定します。例:"C:\Users\YourUser\source\repos\WebAppASPNet\WebAppASPNet\CSVFiles\Account.csv"
- 「RowScanDepth」プロパティを「0」に設定することで、CSV ファイルの表形式表現に対してカラム名とデータ型を動的に決定する際に、ファイル全体がスキャンされます。ドキュメント全体をスキャンするとリクエストに時間がかかる場合がありますが、データモデルを反映する際にカラムのデータ型がより正確になります。
- CSV ファイルにはプライマリキーがないため、UseRowNumbers を「True」に設定します。これにより、テーブルのキーとして使用される「RowNumber」という名前の新しいカラムが作成されます。Entity Framework はデータ操作を管理するためにプライマリキーに依存しており、プライマリキーがないテーブルやビューは生成されるモデルから除外されます。
CData CSV ADO.NET Provider の接続プロパティの詳細については、CData ドキュメントページをご覧ください:CData ADO.NET Provider for CSV ドキュメント
-
Accounts 用の Razor Page を追加する
- プロジェクトの「Pages」フォルダ内に新しい「Accounts」フォルダを作成します。
- ソリューションエクスプローラーで作成した「Accounts」フォルダを右クリックし、「Add」>「Razor Page…」を選択します。
- Razor Page ダイアログで、「Razor Page using Entity Framework」を選択します。
-
「Razor Page using Entity Framework」ダイアログで以下を設定します:
- 「Razor Page name」に新しい Razor Page の名前(例:Accounts)を設定します。
- Template を「List」に設定します。これにより、CSV ファイルのすべての Accounts を一覧表示するページが作成されます。
- 「Model class」に Accounts エンティティ(例:「AccountCSV」)を設定します。
- 「DbContext class」にデータベースコンテキスト「CSVContext」を設定します。
-
「Add」をクリックして新しいページを作成します。これにより、Pages/Accounts フォルダに Razor Page が作成されます:Accounts.cshtml と Accounts.cshtml.cs
-
appsettings.json ファイルに接続文字列を追加する
appsettings.json ファイルに、CSV 接続用の接続文字列を追加する必要があります。以下にコード例を示します:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": {"CSVContext": "URI=YourURI; RowScanDepth=0;UseRowNumbers=True"} } -
Program.cs でコンテキストを登録する
Program.cs ファイルで、コンテキストクラスを依存性注入コンテナーに登録する必要があります。以下のコードでは、ハイライトされた部分が追加された行です:
using WebAppASPNet.Models; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); // サービスをコンテナーに追加 builder.Services.AddRazorPages(); builder.Services.AddDbContext(options => options.UseCSV(builder.Configuration.GetConnectionString("CSVContext"))); -
レイアウトに Razor Page を追加する
Razor Page の設定が完了したら、プロジェクト作成時に用意されていた汎用ページを削除し、_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"] - WebAppASPNet</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="~/WebAppASPNet.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">WebAppASPNet</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="/Accounts/Accounts">Accounts</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 - WebAppASPNet - <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> -
アプリケーションを実行する
すべての設定が完了したら、Accounts.csv ファイルの Accounts を一覧表示する Razor Page を持つアプリケーションを実行できます。まずソリューションをビルドし、緑色の再生ボタンをクリックしてアプリケーションを起動します。アプリケーションのホーム画面が開いたら、「Accounts」タブをクリックして Accounts の一覧を表示できます。以下に例を示します:
データ開発者向けの無料 Community ライセンス
CData ADO.NET Provider は、SaaS、NoSQL、ビッグデータシステムなど、従来のデータベースを超えた270以上のデータソースへの一貫した接続を提供し、Entity Framework の機能をさらに強化します。
CData ADO.NET Community ライセンスを使用すると、個人の .NET プロジェクトでデータにアクセスするための永久無料ライブラリを入手できます。すべて使い慣れた SQL を通じて利用可能です。ライセンスを申請して、今すぐデータアプリの構築を始めましょう!