كيف تكتب منطق "آخر مرة" مثل هذا على verflow stack

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

  •  02-10-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق له منطق مماثل فيما يتعلق بموعد مشاهدة المستخدم آخر مرة. لقد واجهت مشكلة مفاهيمية آمل أن يساعدني بعضكم المعلم.

يتم تسجيل جميع النشاط في جدول ActivityLog في قاعدة البيانات

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

المشكلة التي أواجهها هي هذا.

إذا استخدمت أحدث عنصر نشاط ، فانتقل إلى صفحة حسابي الشخصي ، فإن "آخر مرة شوهدت" تظهر منذ ثانية واحدة لأنني فقط ضربت DB في البداية ... هذا ليس جيدًا لأنني أريد أن أرى ماذا كنت "آخر" هناك ، وليس عندما أكون هناك الآن ".

ومع ذلك ، إذا استخدمت Skip(1).Take(1) للحصول على السجل الثاني في قاعدة البيانات ، ثم عندما يشاهد شخص آخر ملف التعريف الخاص بي بينما قد يكون لدي "فقط" وقعت على ... سوف يرون أنني كنت أقول قبل أسبوع وليس اليوم.

ما نوع المنطق الذي ستستخدمه من أجل الحصول على كعكتك وتناولها أيضًا؟

أنا أستخدم ASP.NET MVC2 و LINQ إلى SQL ، لكنني أعتقد أن هذا السؤال أكثر ملحقًا للغة.

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

المحلول

يبدو أنه يمكنك فقط عرض ثاني أحدث سجل للمستخدم الحالي ، وبالنسبة لجميع المستخدمين الآخرين ، يعرض السجل الأحدث.

نصائح أخرى

ما سأفعله (ببساطة لتجنب حلقة منطقية كبيرة) هو إضافة حقلين. current_seen و last_seen. على نقل تسجيل الدخول current_seen إلى last_seen وحدد current_seen إلى الطابع الزمني الحالي. ثم عرض last_seen كـ "آخر مرة شوهد على XX/XX/XXX".

مكان واحد للنظر هو في الكود المصدري إلى OSQA (نظام سؤال وجواب المصدر المفتوح) -

http://www.osqa.net/

ونعم ، يبدو الأمر يشبه إلى حد كبير Stackoverflow (على أقل تقدير).

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