Контекст
Чтобы включить оптимистичный параллелизм, в модель данных клиента было внесено следующее изменение с использованием Entity Framework 6.
Раньше, без TimeStamp
:
public class Customer
{
public Guid Id { get; set; }
public string Name { get; set; }
}
После, с TimeStamp
:
public class Customer
{
public Guid Id { get; set; }
public string Name { get; set; }
[Timestamp]
public byte[] Version { get; set; }
}
Результаты
На основе этого изменения WEB API добавил ETag в ответ от службы OData.
Раньше, без TimeStamp
:
{
"@odata.context":"http://localhost:50378/$metadata#Customers/$entity",
"Id":"c16883eb-3f4b-3515-9151-caa1c9e5bfc8",
"Name":"TestSeed"
}
Афер с TimeStamp
:
{
"@odata.context":"http://localhost:50378/$metadata#Customers/$entity",
"@odata.etag":"W/\"YmluYXJ5J0FBQUFBQUFBQjlrPSc=\"",
"Id":"c16883eb-3f4b-3515-9151-caa1c9e5bfc8",
"Name":"TestSeed",
"Version":"AAAAAAAAB9k="
}
Вопрос
Поскольку WEB API представил поле Etag в ответе, как мне скрыть свойство Version
из ответа?
На стороне клиента все управляется через файл ETag
. Это только на сервере, на уровне доступа к данным, где используется свойство Version
.
Причина сокрытия свойства Version
заключается в том, чтобы предоставить внешним пользователям нашей службы OData доступ к свойствам, которые используются только в деловых целях.
Я упустил что-то основное?
Id
— это последнее свойство, которое вы хотели бы использовать в качестве метки времени, потому что оно неизменяемо. 19.03.2020