Share via


pac modelbuilder

Dataverse API およびテーブル用のコード ジェネレーター

pac modelbuilder build コマンドを使用して、Dataverse テーブル、カスタム メッセージ、および OrganizationServiceContext クラスから派生したクラス用の事前バインド型の .NET クラスを生成します。 このコマンドを使用して事前バインド クラスを生成する方法の詳細については、こちらをご覧ください

OrganizationServiceContext から派生したクラス :

  • 変更管理などの機能をサポートするために、クライアント上の状態を維持します。
  • System.Linq.IQueryable インターフェイスと .NET 言語統合クエリ (LINQ) クエリ プロバイダーを実装し、Dataverse データを使用して LINQ クエリを作成できるようにします。

このコード生成ツールで有効になる機能の詳細については、次を参照してください。

注意

pac modelbuilder build コマンドは、Microsoft.CrmSdk.CoreTools NuGet パッケージで配布される CrmSvcUtil.exe を置き換えます。

コマンド

command Description
pac modelbuilder build Dataverse API およびテーブル用のコード モデルをビルドします

pac modelbuilder build

Dataverse API およびテーブル用のコード モデルをビルドします

注意

build コマンドを使用するには、まず pac auth create コマンドを使用して Dataverse に接続する必要があります。 複数の接続がある場合は、pac auth select を使用して、コードを生成する Dataverse 環境を選択します。

次の例は、コマンド プロンプトで build コマンドを使う方法を示しています。

pac modelbuilder build ^
  --entitynamesfilter account;contact ^
  --generatesdkmessages ^
  --messagenamesfilter examp_* ^
  --emitfieldsclasses ^
  --emitVirtualAttributes ^
  --namespace MyApps.Model ^
  --outdirectory c:\src\MyApps\Model ^
  --writesettingsTemplateFile ^
  --serviceContextName OrgContext

同じコマンドを PowerShell でも実行できます。

pac modelbuilder build `
  --entitynamesfilter 'account;contact' `
  --generatesdkmessages `
  --messagenamesfilter 'examp_*' `
  --emitfieldsclasses `
  --emitVirtualAttributes `
  --namespace 'MyApps.Model' `
  --outdirectory 'c:\src\MyApps\Model' `
  --writesettingsTemplateFile `
  --serviceContextName 'OrgContext'

重要

PowerShell を使用する場合は、文字列パラメーターを一重引用符で囲む必要があります。

このコマンドの結果、以下のファイルが c:\src\MyApps\Model フォルダに書き込まれます。

C:\src\MyApps\Model\
|---Entities\
| |--account.cs
| |--contact.cs
|---OptionSets\
| |--addresstypes.cs
|---Messages\
| |--examp_myapi.cs
|---EntityOptionSetEnum.cs
|---builderSettings.json
|---OrgContext.cs

builderSettings.json にはコマンドに指定したパラメータが含まれています。 これを使用すると、変更に応じてファイルを迅速に再生成できます。 次の例は、settingsTemplateFile を使用して、最初のコマンドで生成された buildersettings.json ファイルの使用を示しています。

pac modelbuilder build `
  --outdirectory c:\src\MyApps\Model `
  --settingsTemplateFile c:\src\MyApps\Model\builderSettings.json

すべてのパラメータをコマンドに渡す代わりに、builderSettings.json ファイルを作成してそれを使用することもできます。 以下は、上記の最初の例と同等の例です。

{
  "suppressINotifyPattern": false,
  "suppressGeneratedCodeAttribute": false,
  "language": "CS",
  "namespace": "MyApps.Model",
  "serviceContextName": "OrgContext",
  "generateSdkMessages": true,
  "generateGlobalOptionSets": false,
  "emitFieldsClasses": true,
  "entityTypesFolder": "Entities",
  "messagesTypesFolder": "Messages",
  "optionSetsTypesFolder": "OptionSets",
  "entityNamesFilter": [
    "account",
    "contact"
  ],
  "messageNamesFilter": [
    "examp_*"
  ],
  "emitEntityETC": false,
  "emitVirtualAttributes": true
}

settingsTemplateFile パラメーターの使用中にコマンドにパラメーターを渡すと、コマンドに渡されたパラメーターは builderSettings.json ファイルに設定されているパラメーターを上書きします。

settingsTemplateFile パラメータと writesettingsTemplateFile パラメーターを同時に使用することはできません。

Modelbuilder ビルドに必要なパラメーター

--outdirectory -o

エンティティ、メッセージ、およびオプション セット ファイルのディレクトリを書き込みます。

Modelbuilder ビルドで使用するオプションのパラメーター

--emitentityetc -etc

設定すると、生成するコードにエンティティ ETC (エンティティ タイプ コード) を含めます。

このパラメーターには値が必要ありません。 それはスイッチです。

--emitfieldsclasses -efc

コード生成時にエンティティ別のすべてのフィールド名を含む定数構造を生成します。

このパラメーターには値が必要ありません。 それはスイッチです。

--emitvirtualattributes -eva

設定すると、生成するコードにエンティティの仮想属性を含めます。

このパラメーターには値が必要ありません。 それはスイッチです。

--entitynamesfilter -enf

Dataverse からデータを読み取る時に取得されるエンティティのリストをフィルター処理します 。 セミコロンで区切られたリストとして渡されます。 <entitylogicalname>;<entitylogicalname> フォームを使用する

--entitytypesfolder -etf

エンティティを含むフォルダー名。 既定の名前は "エンティティ" です。

--environment -env

ターゲット Dataverse を指定します。 値は、Guid または絶対 https URL にすることができます。 指定しない場合、現在の認証プロファイルに選択されているアクティブな組織が使用されます。

--generateGlobalOptionSets -go

すべてのグローバル オプションセットを生成します。 注: エンティティにグローバル オプションセットへの参照が含まれる場合、この切り替えが存在しなくても生成されます。

--generatesdkmessages -a

設定すると、SDK メッセージ クラスがコード生成の一部として出力されます。

このパラメーターには値が必要ありません。 それはスイッチです。

--language -l

生成されたプロキシ コードに使用する言語。 この値は、"CS" または "VB" のいずれかにすることができます。 既定の言語は「CS」です。

--logLevel -ll

ログ レベル。 既定値は "オフ" です。

次の値のいずれかを使用します。

  • Off
  • Critical
  • Error
  • Warning
  • Information
  • Verbose
  • ActivityTracing
  • All

--messagenamesfilter -mnf

Dataverse からデータを読み取る時に取得されるメッセージのリストをフィルター処理します 。 セミコロンで区切られたリストとして渡され、必要なメッセージ (作成、更新、削除、取得、複数を取得、関連付け、および関連付け解除) が、常に含まれます。 メッセージ名の末尾または先頭にアスタリスク (*) を使用すると、文字列で始まるか文字列で終わるすべてのメッセージが許可されます。 <messagename>;<messagename> フォームを使用します。

--messagestypesfolder -mtf

メッセージを含むフォルダー名。 既定の名前は "メッセージ" です。

--namespace -n

生成するコードの名前空間。 既定の名前空間はグローバル名前空間です。

--optionsetstypesfolder -otf

オプション セットが含まれるフォルダー名。 デフォルト名は "OptionSets" です。

--serviceContextName -sctx

生成されたサービス コンテキストの名前。 値が渡された場合、その値はサービス コンテキストに使用されます。 そうでない場合、サービス コンテキストは生成されません。

--settingsTemplateFile -stf

Dataverse Model Builder の今回の実行に使用される設定が含まれており、コマンド ラインで重複するパラメーターをオーバーライドします。 --writesettingstemplate を使用している場合は設定できません。

--suppressGeneratedCodeAttribute -sgca

設定すると、コード生成エンジンおよびバージョンでタグ付けされているすべての生成されたオブジェクトが非表示になります

このパラメーターには値が必要ありません。 それはスイッチです。

--suppressINotifyPattern

有効化すると、プロパティとクラスの INotify ラッパーを書き込みません。

--writesettingsTemplateFile -wstf

設定すると、現在渡した設定または既定の設定で、出力ディレクトリに設定ファイルを書き出します。

注釈

pac modelbuilder build コマンドを使用する際の推奨事項は次のとおりです。

entitynamesfiltermessagenamesfilter パラメーターを設定する

注意

entitynamesfiltermessagenamesfilter パラメーターを使用して、生成されるファイルをプロジェクトで使用するものに限定することを強くお勧めします。 それ以外の場合、ビルド コマンドは、Dataverse からのすべてのテーブルとメッセージのコードを生成しようとします。 この処理にはかなりの時間がかかります。

Microsoft.Crm.Sdk.Messages および Microsoft.Xrm.Sdk.Messages 名前空間にあるメッセージのクラスは、このコマンドでは生成されません。 messagenamesfilter パラメーターには、カスタム アクションなど、そこにないメッセージのみを含める必要があります。

WPF アプリケーションを構築していない場合は、suppressINotifyPattern を設定する

このコマンドによって抑制される INotify ラッパーは、WPF アプリケーションでのデータ バインディング シナリオに使用されます。 生成されたコードを使用して WPF アプリケーションを構築しない場合、それらは必要ありません。 抑制するには、suppressINotifyPattern パラメーターを使用します。

メッセージ クラスの生成時に serviceContextName を含める を参照してください

メッセージ クラスを生成している場合は、使用していない場合でも serviceContextName パラメーターを OrganizationServiceContext を含めて生成する必要があります。 生成されたメッセージ クラスには、このファイルにプロパティ セットが必要です。 これを設定しない場合に発生するエラーについて詳しくは、こちらをご覧ください。

参照

Microsoft Power Platform CLI コマンド グループ
Microsoft Power Platform CLI の概要