2010-11-18 22 views
2

J'ai une application Windows qui utilise sqlite DB. J'ai créé une configuration pour cette application en utilisant le projet de configuration et de déploiement. Je peux avoir à faire des builds tous les deux mois avec des changements dans l'application et l'utilisateur doit le mettre à jour.Configuration de l'application Windows - mise à jour et modification du schéma de la base de données

Mon application crée le fichier DB sqlite lors de son exécution pour la première fois. Si le fichier DB est présent, il ne le crée pas. Maintenant, quand j'ai une mise à jour pour l'application, je vais devoir faire quelques changements dans le schéma DB aussi. Dans ce cas, l'utilisateur peut également avoir des données dans la base de données sqlite. Je ne devrais pas toucher les données mais mettre à jour le schéma de DB. Aussi cela se produira une fois dans quelques mois, car j'ajouterai de nouvelles fonctionnalités à l'application. Comment gérer normalement ce genre de mise à jour pour l'application?

Je fais une nouvelle configuration chaque fois que j'ajoute de nouvelles fonctionnalités à l'application, ce qui va désinstaller la version existante et installe la nouvelle version. Mais je suis confus au sujet de la partie base de données. Comment devrions-nous gérer cette mise à jour incrémentielle dans le schéma DB?

Des suggestions?

Répondre

0

Bien que les réponses ci-dessus abordent mon problème dans une certaine mesure, j'ai trouvé une approche complètement différente. J'ai utilisé l'approche de mise à jour de base de données donnée par DrDro. Pour la mise à jour de l'application, je pense que j'ai une meilleure approche. J'ai trouvé un article qui parle de la mise à jour automatique de l'application depuis l'application elle-même chaque fois qu'il y a une nouvelle mise à jour disponible à la source (dans mon cas serveur). Il s'agit du article. Il explique très clairement à propos de cette approche et il était oeil sur mes besoins.

1

Autopatchnet - Ce projet est un port .Net de AutoPatch basé sur le projet TactiKnowledge dotnet d'origine.

ecm7migrator - Ce projet est une fourche de Migrator.NET.

Migrator.NET - Migrations de base de données pour .NET. Basé sur l'idée de Rails ActiveRecord Migrations.

+0

Yup; à peu près la réponse est la version de base de données/migrations (que vous devriez faire pour votre code de toute façon, pas seulement le déploiement). – strager

1

Vous devez avoir un numéro de version DB dans votre base de données et demander à votre application de mettre à jour la base de données en fonction du numéro de version. Ainsi, vos scripts de mise à jour SQL seront contenus dans/appelé par votre application, et seront traités au démarrage. La configuration va mettre à jour le code et les fichiers, et votre application mettra à jour la base de données.

+0

La base de données a été implémentée comme vous l'avez dit. La mise à jour de l'application se fait différemment. J'ai répondu à ma propre question. – JPReddy