2009-07-19 14 views
1

Bonjour,Méthode recommandée pour les entités versionnées?

Je suis actuellement dans la toute première phase d'un nouveau projet écrit en .Net et utilisant Entity Framework pour la persistance/stockage de données. L'une des fonctionnalités requises est la possibilité de «versionner» certains types de modèles. Par exemple. un modèle est un 'Exigence' qui aura n 'Exigence Versions', ayant fondamentalement un moyen de revenir dans l'histoire/cycle de vie de cette instance 'Exigence' particulière. La seule chose qui doit être statique dans toutes les révisions est son 'ID', tout le reste est absolument modifiable tout au long de la vie de l'exigence.

Maintenant, le Q est, devrais-je simplement «créer» une relation 1: n entre une exigence >> RequirementVersion? D'autres caractéristiques sont la possibilité de faire revivre complètement les anciens états pour être le dernier/actuel, il doit y avoir la possibilité d'avoir des versions mineures et majeures (changements) et autres, et enfin la possibilité de créer un 'Baseline' sur une collection d'exigences avec la dernière version pour revenir à cette base de référence à un moment ultérieur et afficher toutes les exigences obligatoires incluses?

Cela a à l'échelle jusqu'à deux millions d'enregistrements d'exigence, chacun d'entre eux ayant quelques milliers de révisions .. qui est particulièrement pourquoi je demande .. l'aspect mise à l'échelle d'un simple 1: n relation etc.

Quelqu'un at-il fait quelque chose de similaire et peut-être quelques suggestions/meilleures pratiques etc concernant le versioning/baselining etc?

Vive & merci, -Jörg

Répondre

0

Cela dépend de la quantité de données chaque exigence a.

Si Besoin a de grands champs (par exemple, description de l'exigence).

  1. Vous aimeriez probablement utiliser des champs de version à la place, pas l'exigence elle-même. Malheureusement, il semble qu'il n'y ait pas de moyen facile de gérer Entity Framework.
  2. Une autre solution (nous l'avons fait pour CMS) est d'avoir des tables séparées pour les besoins et pour la description des besoins. Donc, comme résultat, vous aurez RequirementVersions et RequirementDescriptionVersions.

Si l'exigence est suffisamment petite, vous pouvez utiliser Requirement >> RequirementVersion. Dans la plupart des cas, vous n'aurez pas de données significatives, en particulier vous pouvez utiliser la compression SQL2008.