Имя поля идентификатора сущностей ServiceStack

Я использую ServiceStack и хотел бы хранить объекты как хэши в Redis и получать доступ к их частям (полям) по идентификаторам без сериализации всего объекта, поэтому у меня есть вопросы:

  1. Есть ли способ использовать другое свойство, кроме "Id", чтобы пометить поле id? Я использую соглашения об именах, где поле id называется как "класс
    name+Id". Таким образом, в классе User будет поле идентификатора UserId, в
    Itemclass ItemId и так далее.

  2. Есть ли способ обновить свойства, которые были изменены в объекте, без сериализации всего объекта в хэш и без низкоуровневых манипуляций с командой хэша Redis? Например, используя какие-то лямбды.

User user=client.GetById(userId);
user.Name="New name";
client.Update<User>(user,u=>u.Name);

1 ответ

Решение

Да, вы можете переопределить значение по умолчанию с помощью ModelConfig с помощью:

ModelConfig<User>.Id(x => x.UserId);
ModelConfig<Item>.Id(x => x.ItemId);

Это необходимо настроить один раз при запуске, прежде чем использовать RedisClient.

Другие вопросы по тегам