Pregunta

Realmente no sabía cómo formular el título. Pero este es mi problema. Estamos usando SqlCacheDependencies para actualizar los objetos de caché. Pero la consulta detrás de esto es " complicada " que nos gustaría hacerlo un poco más fácil.

Nuestro primer pensamiento fue agregar un nombre de campo como DateChanged y usar DateChanged para verificar si un objeto realmente ha cambiado en lugar de cargar todas las columnas de una tabla.

SELECT DateChanged FROM Table1

en lugar de

SELECT Id, Title, DateChanged, Description FROM Table1

Pero esperaba que alguien pudiera decirme si hay otras formas de hacerlo o si existen normas para nombrar la columna que indica un cambio. ¿Cómo son los marcos como " Entity framework " o " NHibernate " manejar esto?

¿Fue útil?

Solución

Se suele llamar " marca de tiempo "

es decir, en

Otros consejos

Estas son las columnas que uso en " auditable " entidades:

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

Si está en SQL Server, tenga en cuenta que una columna de marca de tiempo tiene un nombre un tanto engañoso. Si bien puede usarse para rastrear cambios en una columna, su valor no tiene nada que ver con la fecha o la hora. Puede pensarse como un ID único en la base de datos, nada más. http://msdn.microsoft.com/en-us/library/aa260631. aspx

Para saber si se ha producido un cambio, necesitas dos marcas de tiempo, como en la respuesta de cherouvim. Uno se establece cuando se crea un objeto, el otro en cualquier modificación, probablemente a través de un activador de actualización. Si difieren, el objeto se ha editado, pero no se puede saber exactamente cuándo.

En SQL Server tiene que usar el mismo patrón, pero con columnas de fecha y hora. Luego, puede calcular la fecha de la fila restando la fecha de creación de la fecha de modificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top