in apps/samplecode/education/rosterapi/EducationAccelerator.WebApi/EducationAccelerator.WebApi/Helpers/DynamicsSyncAgent.cs [188:218]
private void SaveBatch<T, D>(List<T> records, Func<T, D> mappingFunction)
where T : BaseModel
where D : CrmBaseModel
{
foreach (var record in records)
{
// Convert object to destination model
var converted = mappingFunction(record);
if (converted?.msk12_sourcedid == null)
{
throw new Exception("Encountered record without a sourcedid. Cannot continue.");
}
var result = converted.ToJson();
// Upsert
var request = new HttpRequestMessage(new HttpMethod("Patch"), new Uri($"{_crmApiUrl}{converted.EntitySetName}(msk12_sourcedid='{converted.msk12_sourcedid}')"));
request.Headers.Add("OData-MaxVersion", "4.0");
request.Headers.Add("OData-Version", "4.0");
request.Content = new StringContent(result, Encoding.UTF8, "application/json");
var response = _crmClient.SendAsync(request);
if (response.Result.StatusCode != System.Net.HttpStatusCode.OK &&
response.Result.StatusCode != System.Net.HttpStatusCode.NoContent)
{
throw new Exception(response.Result.ToString());
}
}
}