سؤال

أنا في حيرة جدا.

أنا أستخدم هذا المقتطف المفتوح المصدر. لدي جدول بدون أي مشغلات في SQL Server ، ومع ذلك فإن SQLCacheDependency يعمل بشكل جيد. اعتقدت أنك بحاجة إلى مشغلات على الطاولة حتى تعمل؟!

                DateTime localFileTimeStamp = DateTime.Now; 
                DateTime fileTimeStampInDB;
                string cacheKey = string.Format("ImageId_{0}", 1);
                object o = Utils.Cache.Get(cacheKey);
                if (null == o)
                {
                    // get timestamp from DB
                    SqlCacheDependency dep;
                    fileTimeStampInDB = DataLayer.GetTimeStamp(1, out dep);
                    Utils.Cache.Insert(cacheKey, fileTimeStampInDB, dep, Cache.NoAbsoluteExpiration,
                        Cache.NoSlidingExpiration);
                    //, CacheItemPriority.Normal);
                    //new CacheItemRemovedCallback(WebUtils.CacheItemRemovedCallback));
                }

في كل مرة أقوم فيها بتعيين حقل TimeUpdated على GetDate () ، يكتشف الكود الخاص بي أن الكائن O هو فارغ مرة أخرى ، وهو ما ينبغي ، لأنه يجب إسقاطه من ذاكرة التخزين المؤقت بعد أن عفا عليه الزمن ولكن لماذا يعمل؟ لقد بدأت للتو في اتباع البرامج التعليمية على SQLCacheDependency ، لذلك ربما فاتني شيء أثناء قراءتها.

تحرير: إنهم يستخدمون

SqlCacheDependency dependency = new SqlCacheDependency(command);

وأعتقد أن هذا لا يتطلب المشغلات.

لا تتردد في المشاركة إذا كنت لا تحب هذا النهج وتفضل بعض النهج الآخر.

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

المحلول

لا ، لا تحتاج إلى مشغلات على هذا النحو. تم كل شيء على إعلامات الاستعلام. احصل على قراءة من خلال هذه المقالة ، فهو يشرح يمكن إعداد إشعارات الاستعلام الثلاثة باستخدام ADO.NET.

إنها إعلامات الاستعلام هذه ، التي تخطر التغييرات على مجموعة النتائج الأساسية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top