仅使用 WebAPI 创建 Dynamics 365 实体记录
Creating Dynamics 365 entity record using WebAPI only
我已使用 C# 和 Azure 连接到我的 CRM。我的要求是我需要仅使用 WebAPI 创建实体记录。在早期版本中,我使用了 IOrganization 服务并且运行良好。现在,我需要切换到 WebAPI。
我能够使用 webapi 读取记录,但不知道如何创建记录。
我尝试在网上搜索但找不到任何相关的 articles/tutorials。
任何帮助,将不胜感激。
提前致谢。
此示例创建一个新的帐户实体。响应OData-EntityIdheader包含创建实体的Uri
POST [Organization URI]/api/data/v9.0/accounts HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
{
"name": "Sample Account",
"creditonhold": false,
"address1_latitude": 47.639583,
"description": "This is the description of the sample account",
"revenue": 5000000,
"accountcategorycode": 1
}
回应
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.0/accounts(7eb682f1-ca75-e511-80d4-
00155d2a68d1)
要创建新实体,您必须确定有效的 属性 名称和类型。
This documentation 就是您要找的。正如您已经提到的,您可以使用 Web api 读取记录,您可以使用下面的代码片段在 C# 中使用 Web api 创建新的联系人记录。
JObject contact1 = new JObject();
contact1.Add("firstname", "Peter");
contact1.Add("lastname", "Cambel");
HttpRequestMessage createRequest1 = new HttpRequestMessage(HttpMethod.Post, https://xyz.crm.dynamics.com/api/data/v9.0/contacts");
createRequest1.Content = new StringContent(contact1.ToString(), Encoding.UTF8, "application/json");
HttpResponseMessage createResponse1 = await httpClient.SendAsync(createRequest1);
if (createResponse1.StatusCode == HttpStatusCode.NoContent) //204
{
Console.WriteLine("Contact '{0} {1}' created.", contact1.GetValue("firstname"), contact1.GetValue("lastname"));
contact1Uri = createResponse1.Headers.GetValues("OData-EntityId").FirstOrDefault();
entityUris.Add(contact1Uri);
Console.WriteLine("Contact URI: {0}", contact1Uri);
}
else
{
Console.WriteLine("Failed to create contact for reason: {0}", createResponse1.ReasonPhrase);
throw new CrmHttpResponseException(createResponse1.Content);
}
我已使用 C# 和 Azure 连接到我的 CRM。我的要求是我需要仅使用 WebAPI 创建实体记录。在早期版本中,我使用了 IOrganization 服务并且运行良好。现在,我需要切换到 WebAPI。 我能够使用 webapi 读取记录,但不知道如何创建记录。 我尝试在网上搜索但找不到任何相关的 articles/tutorials。 任何帮助,将不胜感激。 提前致谢。
此示例创建一个新的帐户实体。响应OData-EntityIdheader包含创建实体的Uri
POST [Organization URI]/api/data/v9.0/accounts HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
{
"name": "Sample Account",
"creditonhold": false,
"address1_latitude": 47.639583,
"description": "This is the description of the sample account",
"revenue": 5000000,
"accountcategorycode": 1
}
回应
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.0/accounts(7eb682f1-ca75-e511-80d4-
00155d2a68d1)
要创建新实体,您必须确定有效的 属性 名称和类型。
This documentation 就是您要找的。正如您已经提到的,您可以使用 Web api 读取记录,您可以使用下面的代码片段在 C# 中使用 Web api 创建新的联系人记录。
JObject contact1 = new JObject();
contact1.Add("firstname", "Peter");
contact1.Add("lastname", "Cambel");
HttpRequestMessage createRequest1 = new HttpRequestMessage(HttpMethod.Post, https://xyz.crm.dynamics.com/api/data/v9.0/contacts");
createRequest1.Content = new StringContent(contact1.ToString(), Encoding.UTF8, "application/json");
HttpResponseMessage createResponse1 = await httpClient.SendAsync(createRequest1);
if (createResponse1.StatusCode == HttpStatusCode.NoContent) //204
{
Console.WriteLine("Contact '{0} {1}' created.", contact1.GetValue("firstname"), contact1.GetValue("lastname"));
contact1Uri = createResponse1.Headers.GetValues("OData-EntityId").FirstOrDefault();
entityUris.Add(contact1Uri);
Console.WriteLine("Contact URI: {0}", contact1Uri);
}
else
{
Console.WriteLine("Failed to create contact for reason: {0}", createResponse1.ReasonPhrase);
throw new CrmHttpResponseException(createResponse1.Content);
}