La mia tabella ha una colonna timestamp denominata "RowVer" che LINQ esegue il mapping per digitare System.Data.Linq.Binary. Questo tipo di dati sembra inutile perché (a meno che non mi manca qualcosa) Non riesco a fare le cose in questo modo:Interrogazione di una colonna timestamp da LINQ a SQL
// Select all records that changed since the last time we inserted/updated.
IEnumerable<UserSession> rows = db.UserSessions.Where
(usr => usr.RowVer > ????);
Così, una delle soluzioni che sto guardando è quello di aggiungere un nuovo "calcolata colonna" chiamato RowTrack che è definito in SQL come questo:
CREATE TABLE UserSession
(
RowVer timestamp NOT NULL,
RowTrack AS (convert(bigint,[RowVer])),
-- ... other columns ...
)
questo mi permette di interrogare il database come voglio:
// Select all records that changed since the last time we inserted/updated.
IEnumerable<UserSession> rows = db.UserSessions.Where
(usr => usr.RowTrack > 123456);
E 'un brutto modo di fare le cose? Quanto performante sta interrogando su una colonna calcolata? C'è una soluzione migliore?
Inoltre, sto sviluppando contro Sql Server 2000 per la massima compatibilità con le versioni precedenti, ma posso dire al capo di fare del 2005 il minimo comune denominatore.
Grazie per il tuo post. Mi ha fatto riflettere sul problema più per rendermi conto che un datetime è molto meglio perché rappresenta un'informazione più utile. Ora riesco a rilevare _come_ stantio un record è, non solo se è stantio. –
non dimenticare di aggiungere un indice per loro –