STRHM
1.0.0
مقالة مقدمة
سيكون كيان المثال عبارة عن فئة كتاب تحتوي على حقلين أساسيين.
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; }
}
هذا صحيح، لقد لاحظت سمة مخصصة. هذه السمة مسؤولة عن إجراء تسلسل لخاصية معينة عند تعيينها في تجزئة Redis كقيمة.
يرث مستودع الكتب من BaseRedisHashSetRepository، لأنه يكشف عن الوظائف المطلوبة الأكثر شيوعًا واتصال قاعدة البيانات، في حالة إذا كنت تريد توسيع الوظائف في مستودع الكتب نفسه.
public class BookRepository : BaseRedisHashSetRepository<Book>
{
public BookRepository(IRedisConnection redisConnection, IStronglyTypedRedisSerializer serializer, RedisHashSetOptions configurationOptions)
: base(redisConnection, serializer, configurationOptions)
{
}
}
معلمات المنشئ:
أمثلة للحصول على القيم:
// 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)
أو
var book = await _bookRepository.GetAsync(book.Id.ToString());
أمثلة على تحديد القيم:
await _bookRepository.SaveAsync(book.Id.ToString(), book);
أو
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 }
});