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