EntityFrameworkをコードで定義する
それでは、Salesforceのキャンペーンページで表示される内容をCData経由で表示するサンプルを作成してみましょう。
キャンペーンページの内容はCampaignテーブルに格納されています。サーバーエクスプローラーで確認してみましょう。
新規プロジェクトの作成
[ファイル]-[新しいプロジェクト]メニューを選択して[Windowsデスクトップ]-[WPFアプリケーション]を選択してWPFアプリの新規プロジェクトを作成します。
EntityFrameworkライブラリの追加
NuGetを使ってEntityFramework 6(執筆時点の最新は6.1.3)をプロジェクトに追加します。
参照設定
CDataのインストールフォルダ配下のlib\4.0にあるSystem.Data.CData.Salesforce.Entities.EF6.dllを参照設定します。
接続文字列の設定
App.configにSalesforceに接続するためのConnectionStringsを設定します。
<?xml version="1.0" encoding="utf-8"?> <configuration> : (略) : <connectionStrings> <add name="SalesforceContext" connectionString="User=【1】;Password=【2】;Security Token=【3】;" providerName="System.Data.CData.Salesforce" /> </connectionStrings> : (略) : </configuration>
【1】~【3】にはサーバーエクスプローラーで確認済のID、パスワード、セキュリティトークンを指定します。
Salesforceアクセス用クラス
最初に用意するのはCampaignテーブルをクラス定義にしたものです。
Public Class Campaign <DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)> Public Property Id As String Public Property Name As String Public Property Type As String Public Property Status As String Public Property StartDate As DateTime Public Property EndDate As DateTime Public Property ExpectedRevenue As Double Public Property BudgetedCost As Double Public Property ActualCost As Double End Class
テーブルの項目をすべて列挙する必要はありません。必要な項目だけを列挙します。1つだけ注意するのは、プライマリーキー(今回のケースならばId)を必ず含めるようにしてください。
次にSalesforceとの接続用クラスを定義します。この中で先ほど作成したCampaignテーブル用のクラスを指定します。
Public Class SalesforceContext Inherits DbContext Public Property Campaign As DbSet(Of Campaign) Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder) System.Data.Entity.Database.SetInitializer(Of SalesforceContext)(Nothing) modelBuilder.Conventions.Remove(Of PluralizingTableNameConvention)() End Sub End Class