Я хочу обновить сущность OData, но сначала я получаю сущность из источника данных, используя запрос с $ select, чтобы получить только значения ключа и поля, которые я хочу обновить.Из-за природы источника OData обновление может фактически привести к обновлению других полей в источнике, поэтому я хочу получить всю сущность обратно после обновления.
Я использую библиотеку OData.net .
Мой код следует такой общей схеме:
DataServiceContext context ...; //instantiated with proper url, etc.
DataServiceQuery<Customer> customers = context.Customers;
// ... add $filter & $select
// ... execute query
// ... Update fields - property tracking is on customers
var response = Client.SaveChangesAsync().GetAwaiter().GetResult();
// ... check response for success
// ... create dictionary key for ByKey
Customer customer = context.Customers.ByKey(dictKey).GetValue();
Когда я смотрю на клиентасодержит только те значения, которые я получил с помощью запроса клиентов.Однако я использовал не запрос клиентов, а свойство entityset непосредственно в контексте (context.customers).
Когда я использую fiddler, я вижу, что патч правильно вызывается для обновления из Client.SaveChangesAsync ()
PATCH https://MyURl/data/Customers(dataAreaId='usmf',CustomerAccount='US-051') {"@ odata.type":"# Microsoft.Dynamics.DataEntities.Customer", "AddressDescription": "Адрес счета Левриджа", "CustomerAccount": "US-051", "dataAreaId": "usmf", "OrganizationName": "Levridge, LLC"}
Я подтвердил, что в get не входит $ select через Fiddler:
GET https://mark9a40e96096f2dec6devaos.cloudax.dynamics.com/data/CustomersV3(dataAreaId='usmf',CustomerAccount='US-051')
И вся сущность находится в процессевозвращается с get выше (содержание возврата 7K, поэтому я не буду показывать содержимое здесь).Достаточно сказать, что я подтвердил, что ответ включает в себя все значение сущности.
Кто-то знает, почему покупатель в: Customer customer = context.Customers.ByKey(dictKey).GetValue();
не содержит значений, возвращаемых при получении, и что нужно сделать, чтобы получитьСвойства объекта клиента обновлены значениями, содержащимися в ответе на запрос get?
Спасибо.