Dataverse API 和表的代码生成器
使用 pac modelbuilder 生成 命令为 Dataverse 表、自定义消息和派生自 OrganizationServiceContext 类的类生成早期绑定的 .NET 类。 详细了解如何使用此命令生成早期绑定类
派生自 OrganizationServiceContext:
- 在客户端上维护状态以支持更改管理等功能。
- 实现 System.Linq.IQueryable 接口 和 .NET Language-Integrated 查询(LINQ)查询提供程序,以便可以使用 Dataverse 数据编写 LINQ 查询。
有关此代码生成工具启用的功能的详细信息:
注释
此命令 pac modelbuilder build 将分布式包替换为 CrmSvcUtil.exeMicrosoft.CrmSdk.CoreTools NuGet 包。
指令
| Command | Description |
|---|---|
| pac modelbuilder 生成 | 为 Dataverse API 和表生成代码模型 |
pac modelbuilder 生成
为 Dataverse API 和表生成代码模型
注释
在使用 build 命令之前,必须先使用 pac auth create 命令连接到 Dataverse。 如果有多个连接,请使用 pac 身份验证选择 以选择要为其生成代码的 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 包含为命令指定的参数。 在发生更改时,可以使用它快速重新生成文件。 以下示例演示如何使用 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
为实体、消息和选项集文件写入目录。
模型构建器生成的可选参数
--emitentityetc
-etc
设置后,在生成的代码中包含实体 ETC(实体类型代码)。
此参数不需要任何值。 这是一个开关。
--emitfieldsclasses
-efc
生成一个常量结构,该结构包含代码生成时按实体的所有字段名称。
此参数不需要任何值。 这是一个开关。
--emitvirtualattributes
-eva
设置后,包括支持查找的名称属性,用于对查找属性的主名称属性值进行筛选。
此参数不需要任何值。 这是一个开关。
--entitynamesfilter
-enf
从 Dataverse 读取数据时,筛选实体列表。 作为分号分隔的列表传入。 使用 form <entitylogicalname>;<entitylogicalname>
--entitytypesfolder
-etf
包含实体的文件夹名称。 默认名称为“Entities”。
--environment
-env
指定目标 Dataverse。 该值可以是 Guid 或绝对 https URL。 如果未指定,将使用为当前身份验证配置文件选择的活动组织。
--generateGlobalOptionSets
-go
发出所有全局选项集。 注意:如果实体包含对全局选项集的引用,则即使此开关不存在,也会发出它。
--generatesdkmessages
-a
设置后,在代码生成过程中发出 Sdk 消息类。
此参数不需要任何值。 这是一个开关。
--language
-l
要用于生成的代理代码的语言。 此值可以是“CS”或“VB”。 默认语言为“CS”。
--logLevel
-ll
日志级别。 默认值为“Off”。
使用以下值之一:
OffCriticalErrorWarningInformationVerboseActivityTracingAll
--messagenamesfilter
-mnf
筛选从 Dataverse 读取数据时检索的消息列表。 作为分号分隔列表传入,始终包含所需的消息(创建、更新、删除、检索、RetrieveMultiple、Associate 和 Disassociate)。 使用尾随或前导星号 \ 和消息的名称,以允许以字符串开头或以字符串结尾的所有消息。 使用表单 <消息名称>;<messagename>。
--messagestypesfolder
-mtf
包含邮件的文件夹名称。 默认名称为“Messages”。
--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 概述