STRHM
1.0.0
Article d'introduction
Un exemple d'entité sera une classe Book, qui comporte quelques champs de base.
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; }
}
C'est vrai, vous avez remarqué un attribut personnalisé. Cet attribut est responsable de la sérialisation d'une propriété particulière lorsqu'elle est définie dans le hachage Redis en tant que valeur.
Le référentiel de livres hérite de BaseRedisHashSetRepository, car il expose les fonctionnalités et la connexion à la base de données les plus courantes, au cas où vous souhaiteriez étendre les fonctionnalités du référentiel de livres lui-même.
public class BookRepository : BaseRedisHashSetRepository<Book>
{
public BookRepository(IRedisConnection redisConnection, IStronglyTypedRedisSerializer serializer, RedisHashSetOptions configurationOptions)
: base(redisConnection, serializer, configurationOptions)
{
}
}
Paramètres du constructeur :
Exemples d'obtention de valeurs :
// 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)
ou
var book = await _bookRepository.GetAsync(book.Id.ToString());
Exemples de valeurs de réglage :
await _bookRepository.SaveAsync(book.Id.ToString(), book);
ou
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 }
});