كيفية تنفيذ "الحصول على أحدث العناصر التي تم تغييرها" مع خدمات بيانات ADO.NET؟

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

سؤال

دعونا نقول أن لدي قوائم من الكيانات (على سبيل المثال، قائمة عناصر ToDDO) التي يمكن أن تتغير أكثر من مستخدم واحد، حذف منها وإضافته إلى نفس الوقت.

حتى تحتفظ بمزامنة مدرجة بين جميع العملاء، أريد أن أسأل كل عميل (AJAX) تغيير التغييرات كل ثانية XX. نظرا لأن القائمة يمكن أن تحصل لفترة طويلة، لا أريد إجراء طلب كامل في كل مرة، ولكن فقط طلب العناصر المتغيرة (يمكن تحديث العناصر، حذفها أو جديدة).

هل من الممكن مع خدمات بيانات ADO.NET؟ إذا كان الأمر كذلك، كيف يمكنني تطبيقه، إذا كنت أستخدم إطار الكيان على الخادم؟

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

من الممكن أيضا أن يطلب حل كبير للعميل تغييرات في العديد من الكيانات في ذهاب الدنترنت نفسه إلى الخادم.

أي إدخال سيتم التقييس كثيرا.

مع أطيب التحيات، EGIL.

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

المحلول

الطريقة التي ينبعها في ذهني هي استخدام رقم جيل للجدول. امنح جدول TODO عمود يسمى الجيل والجيل (عقليا) مع وجود متغير رقم جيل عالمي ومستمر. (ربما أفضل لوضع هذا في جدول في DB).

في كل مرة يتم فيها إجراء تحديث أو إدراج يتم زيادة رقم الجيل ووضعه في عمود رقم الجيل للحصول على السجل المحدث أو المدرج.

عند قراءة السجلات لأول مرة من DB ووضعها على صفحة الويب، يتم استرجاع رقم الجيل الحالي أيضا ومخزنة مؤقتا محليا (أي وضعه في متغير JavaScript). يقرأ Ajax اللاحق يقرأ استخدام جملة حيث يتسجيل المرشح فقط مع رقم الجيل أكبر من رقم الجيل المخزن مؤقتا محليا. هذا يضمن يتم استرداد تحديثات جديدة وحذف فقط. يتم بعد ذلك تحديث رقم الجيل المخزن مؤقتا محليا.

حذف أكثر صعبة بعض الشيء. طريقة واحدة للقيام بذلك هي قبر سجلات محذوفة لفترة محدودة، قل 21 دقيقة. لديك عمود BIT يسمى Tombstone وعمود DateTime. عند حذف السجل، يتم تعيين الأعمدة رقم الجيل الذي تم تعيينه بنفس الطريقة بالنسبة لإدراج أو حذف، يتم تعيين بت Tombstone، ويتم تعيين DateTime على الوقت الحالي باستخدام GetDate (). يمكن لطلب AJAX للعميل ثم تحديد سجلات مع مجموعة علامة Tombstone وإزالتها من قائمة العميل الجانبية. إذا تم ترميز العميل بحيث يتم ترحيل العميل بعد كل 20 دقيقة من تحديث الصفحة الكاملة، أو يتم تطبيق مكالمة AJAX التي تحصل على كل سجل، فيمكن شحن وظيفة DB كل دقيقة وتنظيفها (أي حذف) سجلات TombStoned أقدم من 20 الدقائق.

تحرير: لن تحتاج في الواقع إلى استمرار رقم الجيل بشكل منفصل، فيمكنك دالة SQL كحد أقصى على عمود الجيل.

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