إزالة الكائنات من ذاكرة التخزين المؤقت من المستوى الثاني من Nhibernate

StackOverflow https://stackoverflow.com/questions/1778125

سؤال

لقد بدأت للتو التفكير في استخدام ذاكرة التخزين المؤقت من المستوى الثاني من Nhibernate في أحد تطبيقي. ربما سأستخدم NHibernate.Caches.SysCache.SysCacheProvider الذي يعتمد على ذاكرة التخزين المؤقت ASP.NET.

لم يكن تمكين ذاكرة التخزين المؤقت مشكلة ، لكنني أتساءل عن كيفية إدارة ذاكرة التخزين المؤقت ، على سبيل المثال ، إزالة بعض الكيانات من ذاكرة التخزين المؤقت وما إلى ذلك.

طلبي هو نوع من قاعدة بيانات الصور. يقوم المستخدم بتحميل الصور عبر الواجهة الخلفية ويمكنه مشاهدتها في الواجهة الأمامية عن طريق الوصول إليها /ImageDb/Show?userId=someUserId

لا تتغير البيانات كثيرًا. وإذا تغير ، فلن يهم المستخدمون زرًا يسمى "مسح ذاكرة التخزين المؤقت" في الواجهة الخلفية التي تزيل الكائنات المخزنة مؤقتًا هذا المستخدم من ذاكرة التخزين المؤقت.

لقد وجدت حلًا عبر الإنترنت يمكنه الإزالة الكل كائنات مخزنة مؤقتًا من ذاكرة التخزين المؤقت من المستوى الثاني. لكن هذه قوة وحشية للغاية بالنسبة لي ... لا أريد مسح ذاكرة التخزين المؤقت بالكامل لعشرات المستخدمين لمجرد أن أحد المستخدمين حاول مسح ذاكرة التخزين المؤقت لبياناته الخاصة.

لذا فإن ما أردت القيام به بشكل أساسي: إزالة كائنات DB المخزنة مؤقتًا من ذاكرة التخزين المؤقت من المستوى الثاني في NHibernates في C#.

هل هذا ممكن؟ أعتقد أنه يعتمد أيضًا على مزود ذاكرة التخزين المؤقت. إذا لم يكن هذا قابلاً للتنفيذ مع مزود ذاكرة التخزين المؤقت ASP.NET ، فأنا منفتح على اقتراحات أخرى في المصدر المفتوح.

هل كانت مفيدة؟

المحلول

يوفر SessionFactory الطرق التي تريدها ... من 19.3 الفصل من مرجع Nhibernate:

لطرد جميع الكائنات من ذاكرة التخزين المؤقت للجلسة ، call isession.clear () لذاكرة التخزين المؤقت من المستوى الثاني ، هناك طرق محددة على iSessionFactory لإلغاء الحالة المخزنة مؤقتًا أو فئة كاملة أو مثيل مجموعة أو دور كامل.

sessionFactory.Evict(typeof(Cat), catId); //evict a particular Cat
sessionFactory.Evict(typeof(Cat)); //evict all Cats
sessionFactory.EvictCollection("Eg.Cat.Kittens", catId); //evict a particular collection of kittens
sessionFactory.EvictCollection("Eg.Cat.Kittens"); //evict all kitten collections
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top