Dataverse API 和資料表的程式碼產生器
使用 pac modelbuilder 建置 命令為 Dataverse 資料表、自訂訊息和衍生自 OrganizationServiceContext 類別的類別產生早期繫結的 .NET 類別。 深入瞭解如何使用此指令來產生早期繫結類別
衍生自 OrganizationServiceContext:
- 維護用戶端上的狀態,以支援變更管理等功能。
- 實作 System.Linq.IQueryable 介面 和 .NET Language-Integrated 查詢 (LINQ) 查詢提供者,以便您可以使用 Dataverse 資料撰寫 LINQ 查詢。
如需此程式碼產生工具所啟用功能的詳細資訊:
Commands
| Command | Description |
|---|---|
| PAC 模型產生器建置 | 建置 Dataverse API 和資料表的程式碼模型 |
PAC 模型產生器建置
建置 Dataverse API 和資料表的程式碼模型
備註
您必須先使用 build 命令連線到 Dataverse,才能使用命令。 如果您有多個連線,請使用 pac auth select 來選擇您要為其產生程式碼的 Dataverse 環境。
Example
下列範例示範如何搭配命令提示字元使用 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 包含您為命令指定的參數。 您可以使用它來隨著情況的變化快速重新生成文件。 下列範例示範使用 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 參數。
模型產生器建置的必要參數
--outdirectory
-o
寫入實體、訊息和選項集檔案的目錄。
模型產生器建置的選用參數
--emitentityetc
-etc
設定後,在產生的程式碼中包含實體 ETC(實體類型代碼)。
此參數不需要任何值。 這是一個開關。
--emitfieldsclasses
-efc
產生常數結構,其中包含程式碼產生時依實體列出的所有欄位名稱。
此參數不需要任何值。 這是一個開關。
--emitvirtualattributes
-eva
設定時,包括查閱的支援名稱屬性,這些查閱可對查閱屬性的主要名稱屬性值進行篩選。
此參數不需要任何值。 這是一個開關。
--entitynamesfilter
-enf
篩選從 Dataverse 讀取資料時擷取的實體清單。 以分號分隔開清單傳入。 使用表單 <entitylogicalname>;<實體邏輯名稱>
--entitytypesfolder
-etf
包含實體的資料夾名稱。 預設名稱為「實體」。
--environment
-env
指定目標 Dataverse。 值可以是 Guid 或絕對 https URL。 如果未指定,則會使用為目前驗證設定檔選取的作用中組織。
--generateGlobalOptionSets
-go
發出所有全域選項集。 附註: 如果實體包含對全域選項集的參照,則即使此開關不存在,也會發出該參照。
--generatesdkmessages
-a
設定時,會在程式碼產生過程中發出 Sdk 訊息類別。
此參數不需要任何值。 這是一個開關。
--language
-l
要用於產生的 Proxy 程式碼的語言。 此值可以是 'CS' 或 'VB'。 預設語言為「CS」。
--logLevel
-ll
記錄層級。 預設值為「關閉」。
使用下列其中一個值:
OffCriticalErrorWarningInformationVerboseActivityTracingAll
--messagenamesfilter
-mnf
篩選從 Dataverse 讀取資料時擷取的訊息清單。 以分號分隔清單的形式傳入,一律會包含必要的訊息 (建立、更新、刪除、擷取、擷取多重、關聯和取消關聯)。 在訊息名稱中使用尾端或前導星號 (*) ,以容許以字串開頭或結尾的所有訊息。 使用表單 <messagename>;<messagename 的 MessageName> 中。
--messagestypesfolder
-mtf
包含郵件的資料夾名稱。 預設名稱為「訊息」。
--namespace
-n
所產生程式代碼的命名空間。 預設名稱空間是全域命名空間。
--optionsetstypesfolder
-otf
包含選項集的資料夾名稱。 預設名稱為「OptionSets」。
--serviceContextName
-sctx
所產生服務前後關聯的名稱。 如果傳入值,則會用於服務內容。 否則,不會產生任何服務內容。
--settingsTemplateFile
-stf
包含要用於此 Dataverse 模型產生器執行的設定,覆寫命令列上的任何重複參數。 使用 --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 概觀