Объект OData не обновляется с результатами запроса - PullRequest
0 голосов
/ 08 июня 2018

Я хочу обновить сущность 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?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...