STRHM
1.0.0
Artículo de introducción
La entidad de ejemplo será una clase Libro, que tiene un par de campos básicos.
public class Book
{
public int Id { get; set; }
public int? Rating { get; set; }
public DateTime PublishedOn { get; set; }
[SerializableRedisProperty]
public List<Author> Authors { get; set; }
}
Así es, notaste un atributo personalizado. Este atributo es responsable de que una propiedad particular se serialice cuando se establece en el hash de Redis como valor.
El repositorio de libros hereda de BaseRedisHashSetRepository, ya que expone la funcionalidad más común necesaria y la conexión a la base de datos, en caso de que desee ampliar la funcionalidad en el propio repositorio de libros.
public class BookRepository : BaseRedisHashSetRepository<Book>
{
public BookRepository(IRedisConnection redisConnection, IStronglyTypedRedisSerializer serializer, RedisHashSetOptions configurationOptions)
: base(redisConnection, serializer, configurationOptions)
{
}
}
Parámetros del constructor:
Ejemplos de obtención de valores:
// Check if value is set on property
if (updatedBook.HasValue(b => b.Rating))
// Get values
updatedBook.Get<IEnumerable<Author>>(b => b.Authors)
updatedBook.Get<int?>(b => b.Rating)
o
var book = await _bookRepository.GetAsync(book.Id.ToString());
Ejemplos de valores de configuración:
await _bookRepository.SaveAsync(book.Id.ToString(), book);
o
await _bookRepository.HashSetAsync(book.Id.ToString(), new StronglyTypedDictionary<Book>(new StronglyTypedRedisNewtonsoftSerializer())
{
{ b => b.Rating, 10 },
{ b => b.Authors, new List<Author>()},
{ b => b.PublishedOn, DateTime.Now }
});