В большинстве примеров моделей таблицы сущностей я вижу что-то вроде:Azure дизайн табличная модель сущность
public class CustomerEntity : TableEntity
{
public CustomerEntity(string lastName, string firstName)
{
this.PartitionKey = lastName;
this.RowKey = firstName;
}
public CustomerEntity() { }
public string Email { get; set; }
public string PhoneNumber { get; set; }
}
Как мы видим, здесь lastname
и firstname
используется в качестве ключа секционирования и ключа строки соответственно. Поэтому после сохранения и получения объекта я могу получить доступ к этой информации от PartitionKey
и RowKey
. Но что, если я хочу отправить эту модель на клиентскую сторону позже как json, я полагаю, что PartitionKey
и RowKey
базового класса TableEntity не будут сериализованы. Поэтому, если я добавлю LastName
и FirstName
в качестве свойств модели, то при хранении будет происходить ненужное дублирование данных. Лучший способ избежать дублирования данных в хранилище и в то же время иметь доступ к имени и имени после сериализации модели.
Почему вы думаете, что 'PartitionKey' и' RowKey' не будут сериализованы? –
Я помню, что мы используем атрибут [DataMember], чтобы определить, следует ли сериализовать свойство модели, что в веб-api не нужно ... – igorGIS
Возможно, вы уже это рассмотрели, но с этим дизайном вы можете иметь только одного клиента с то же имя. Если у вас есть два клиента с общим именем «Крис Уильямс», например, это не сработает, поскольку комбинация PartitionKey и RowKey должна быть уникальной. – ChrisW