фоновойAzure TableEntity - Hooking для чтения/записи операций
Предполагая, что у меня есть Azure Table Entity
class MyEntity : TableEntity
{
public string LongString { get; set; }
public bool IsCompressed { get; set; }
}
И если LongString
> 64KB (Azure ограничения на собственность), я хочу, чтобы сохранить LongString
сжимается. Для этого у меня есть 2 функции Compress(string)
и Decompress(string)
В настоящее время перед каждым вкладышем я проверяю длину LongString
и если это> 64KB, я устанавливаю LongString = Compress(LongString)
и IsCompressed = true
. Противоположность после каждой операции Azure.
Я хочу скрыть вариант сжатия от всего кода и обеспечить саморазложение сжатия и декомпрессии в классе MyEntity
.
Вопрос
Есть ли возможность сделать пользовательские операции до и после получения и установки объектов из лазурной таблицы? Что-то вроде ...
class MyEntity : TableEntity
{
public string LongString { get; set; }
public string IsCompressed { get; set; }
public override void BeforeInsert()
{
if (LongString.Length > 64KB)
{
LongString = Compress(LongString);
IsCompressed = true;
}
}
public override void AfterGet()
{
if (IsCompressed)
{
LongString = Decompress(LongString);
IsCompressed = false;
}
}
}
Один несовершеннолетний не по теме комментарий: Дано Azure использует UTF16 для кодирования данных и, таким образом, использует 2 байта, чтобы сохранить каждый байт данных, которые предоставляют, предел фактически 32KB вместо 64KB. Думаю, я должен упомянуть об этом. –