在一个请求中创建并设置 CRM 实体的状态

Jen*_*nsB 5 c# dynamics-crm dynamics-crm-2011

使用此代码,我可以在 C# 中设置 CRM 实体的状态和状况。

SetStateRequest appointmentRequest = new SetStateRequest
{
    State = new OptionSetValue(3), //Scheduled
    Status = new OptionSetValue(5), //Busy
    EntityMoniker = new EntityReference("appointment", myEntity.Id)
};

crmsvc.Execute(appointmentRequest);
Run Code Online (Sandbox Code Playgroud)

在此之前的几行我正在使用创建相同的实体

crmsvc.Create(myEntity);
Run Code Online (Sandbox Code Playgroud)

在两个请求中执行此操作似乎很愚蠢,因此我寻找一种在一个请求中执行此操作的方法。

发现这个问题我需要设置自定义实体的状态和状态代码,似乎可以在保存之前设置状态代码,但我找不到任何使用状态执行此操作的示例。

尝试这样做,但它不起作用

myEntity["state"] = new OptionSetValue(3);
Run Code Online (Sandbox Code Playgroud)

它返回:

实体不包含名称 = 'state' 的属性。(故障详细信息等于 Microsoft.Xrm.Sdk.OrganizationServiceFault):“Entity”实体不包含名称 =“state”的属性。

那么state和statuscode可以在第一次保存之前设置吗?

cce*_*lar 4

正如您在属性列表中看到的,状态代码属性对于创建无效。这意味着 CRM 将忽略您传递的值。

改变状态始终是一个显式的动作。因此,您无法将其合并到一个调用中。

statuscode但是,您可以在创建调用期间定义已经。

另请注意,表示记录状态的属性是statecodestatuscode,并且它们的值相互依赖。