2008-12-18 5 views
4

Je prévois d'utiliser MS entity framework pour les nouvelles applications web (venez sur EF v2!).En utilisant le framework d'entité, devrais-je ajouter un horodatage à toutes mes tables de base de données?

Il ne judicieux de planifier à l'avance en ajoutant des colonnes d'horodatage à toutes les tables d'entités dans les bases de données existantes et futures, pour soutenir les contrôles d'accès concurrentiel? Y a-t-il une raison pour laquelle ce serait mauvaise d'avoir une colonne d'horodatage dans chaque table? Notez que le but est d'ajouter le support pour la concurrence optimiste, pas pour l'audit.

Répondre

10

J'ai utilisé des colonnes d'horodatage de façon routinière pendant des années. Une autre option est une version en ligne, mais vous devez ensuite la mettre à jour, etc. Je n'ai jamais eu de problème avec l'horodatage. Un mot d'avertissement - si vous sélectionnez dans un temp-table/table-var pour le traitement, vous devez utiliser varbinary(8), pas timestamp, dans la table temporaire - sinon votre table temporaire aura ses propres horodateurs uniques lors de la mise à jour ;-p

Comme vous le reconnaissez, timestamp aide uniquement avec la simultanéité. Malgré le nom, il n'a rien à faire avec le temps, donc ne va pas aider à l'audit.

Il est bien pris en charge dans les offres MS db (LINQ to SQL/EF/etc)

0

Dans les projets précédents j'ai utilisé beaucoup TimeStamps, et je jamais eu une mauvaise expérience avec elle. En outre, j'écarterais totalement Entity Framework de cette décision, car cela pourrait changer au fil du temps.

Questions connexes