Domanda

Non sapevo davvero come formulare il titolo. Ma questo è il mio problema Stiamo usando SqlCacheDependencies per aggiornare gli oggetti cache. Ma la domanda dietro questo è "complicata" che vorremmo renderlo un po 'più semplice.

Il nostro primo pensiero è stato quello di aggiungere un nome campo come DateChanged e utilizzare DateChanged per verificare se un oggetto è effettivamente cambiato anziché caricare tutte le colonne di una tabella.

SELECT DateChanged FROM Table1

invece di

SELECT Id, Title, DateChanged, Description FROM Table1

Ma speravo che qualcuno potesse dirmi se ci sono altri modi per farlo o se ci sono standard per nominare la colonna che indica un cambiamento. Come sono i framework come " Entity framework " oppure "NHibernate" gestire questo?

È stato utile?

Soluzione

Di solito si chiama " timestamp "

ovvero in

Altri suggerimenti

Queste sono le colonne che utilizzo su " verificabile " entità:

version: hibernate's optimistic concurrency control
createdBy: FK to users
modifiedBy: FK to users
createdAt: timestamp
modifiedAt: timestamp

Se sei su SQL Server, tieni presente che una colonna timestamp è in qualche modo fuorviante. Sebbene possa essere utilizzato per tenere traccia delle modifiche a una colonna, il suo valore non ha nulla a che fare con la data o l'ora. Può essere pensato come un ID unico nel database, niente di più. http://msdn.microsoft.com/en-us/library/aa260631. aspx

Per sapere se è avvenuta una modifica sono necessari due timestamp, come nella risposta di cherouvim. Uno viene impostato quando viene creato un oggetto, l'altro su qualsiasi modifica, probabilmente tramite il trigger di aggiornamento. Se differiscono, l'oggetto è stato modificato, ma non si può dire esattamente quando.

Su SQL Server devi usare lo stesso modello, ma con colonne datetime. Puoi quindi calcolare la data della riga sottraendo la data di creazione dalla data mod.

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