pac modelbuilder
Dataverse API およびテーブル用のコード ジェネレーター
pac modelbuilder build コマンドを使用して、Dataverse テーブル、カスタム メッセージ、および OrganizationServiceContext クラスから派生したクラス用の事前バインド型の .NET クラスを生成します。 このコマンドを使用して早期バインドクラスを生成する方法の詳細
OrganizationServiceContext から派生したクラス :
- 変更管理などの機能をサポートするために、クライアント上の状態を維持します。
- System.Linq.IQueryable インターフェイスと .NET 言語統合クエリ (LINQ) クエリ プロバイダーを実装し、Dataverse データを使用して LINQ クエリを作成できるようにします。
このコード生成ツールで有効になる機能の詳細については、次を参照してください。
注意
pac modelbuilder build
コマンドは、 CrmSvcUtil.exe
配布された Microsoft.CrmSdk.CoreTools NuGet パッケージを置き換えます。
コマンド
command | プロパティ |
---|---|
PACモデルビルダー ビルド | 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\
|---エンティティ\
| |--account.cs
| |--contact.cs
|---オプションセット\
| |--addresstypes.cs
|---メッセージ\
| |--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
コマンドを使用する際の推奨事項は次のとおりです。
entitynamesfilter
と messagenamesfilter
パラメーターを設定する
注意
entitynamesfilter と messagenamesfilter パラメーターを使用して、生成されるファイルをプロジェクトで使用するものに限定することを強くお勧めします。 それ以外の場合、ビルド コマンドは、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の概要