Domanda

Sto lavorando a un'applicazione che ha una logica simile come SO per quanto riguarda quando l'utente è stato visto l'ultima volta. Ho incontrato un problema concettuale che spero qualcuno di voi può aiutare di Guru mi fuori con.

Tutta l'attività viene registrato in una tabella ActivityLog nel database

Quando un utente collegato colpisce il sito e viene creata una nuova sessione, ho aggiornare il registro delle attività con l'UserID e alcune informazioni molto generiche. Stessa cosa succede quando creano un nuovo record, aggiornare il proprio profilo, ecc.

Il problema che sto avendo è questo.

Se uso la voce attività più recente, quindi accedere alla mia pagina account personale, il "Last Seen" mostra come 1 secondo fa, perché ho appena colpito il db su Avviare sessione ... Questo non è buono perché voglio per vedere quello che ero "ultimo" lì, non quando ci sono io "ora".

Tuttavia, se uso Skip(1).Take(1) per ottenere il secondo record nel database, quindi quando qualcuno vede il mio profilo, mentre io forse ho "solo" firmato il ... vedranno che ero detto una settimana fa e non oggi.

Che tipo di logica che si utilizza in modo da avere la botte piena e la moglie ubriaca?

Sto usando ASP.NET MVC2 e LINQ to SQL, ma penso che questa domanda è più la lingua agnostico.

È stato utile?

Soluzione

Sembra che si può solo mostrare il record secondo più recente per l'utente corrente, e per tutti gli altri utenti mostrano la più recente.

Altri suggerimenti

Che cosa farei (semplicemente per evitare un ciclo di grandi dimensioni logica) potrebbe essere quella di aggiungere due campi. current_seen e last_seen. Su login mossa current_seen per last_seen e set current_seen al timestampe corrente. Quindi visualizzare last_seen come loro "Ultimo visto su XX / XX / XXX".

Un posto da vedere è il codice sorgente per OSQA (la fonte q aperta e un sistema) -

http://www.osqa.net/

E sì, sembra un po 'come StackOverflow (a dir poco).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top