Est-il possible d'utiliser couramment migrator dans application_start?
J'utilise couramment migrator pour gérer mon migrations de base de données, mais ce que je voudrais faire est de les migrations exécuter à l'application de démarrage. Le plus proche que j'ai réussi, c'est ce:
public static void MigrateToLatest(string connectionString)
{
using (var announcer = new TextWriterAnnouncer(Console.Out)
{
ShowElapsedTime = true,
ShowSql = true
})
{
var assembly = typeof(Runner).Assembly.GetName().Name;
var migrationContext = new RunnerContext(announcer)
{
Connection = connectionString,
Database = "SqlServer2008",
Target = assembly
};
var executor = new TaskExecutor(migrationContext);
executor.Execute();
}
}
Je suis sûr que j'ai eu ce travail, mais je n'ai pas regardé depuis un moment (projet de loisirs) et il est maintenant jeter référence null exceptions quand il arrive à l' Execute
ligne. Malheureusement, il n'y a pas de docs pour cela et j'ai été frapper ma tête sur elle pour les âges.
Quelqu'un a réussi à faire passer ce genre de chose à travailler avec FluentMigrator?
- Je vais le dire ici: Mauvaise Idée. Attacher les déploiements/migrations dans le début de votre application? La folie. Quelle est l'application va faire si un échec de la migration? Ne pas démarrer?
- l'application est-elle susceptible de s'exécuter si elle s'attend à l'migré de la base de données? À défaut au démarrage est la bonne réponse.
- Peine. Vous devez immédiatement faire reculer une application qui a omis de sa migration. L'application ne devrait pas être conscient de ce que la version qu'il est, il doit il suffit d'exécuter la version qu'il possède.
- Ce sujet pour les essais? La génération d'une base de données vide pour effectuer l'intégration ou de tests d'acceptation contre. C'est une bonne et utile scénario.
- Il y a quelques années, mais ce que je fais maintenant est: Construire server s'exécute sql migrations (redgate outils), s'ils ne l'accumulation revient, si ce n'est qu'ils continuent et le déploiement du logiciel. C'est la même chose pour l'assurance qualité, live etc. Localement, l'équipe de dev utilisation de redgate sql contrôle de code source. Il s'avère être une manière stable de travail.
Vous devez vous connecter pour publier un commentaire.
Manuellement ajouter une référence à:
Remarque que le nom de dossier varient en fonction du numéro de version, cette illustration utilise la version 1.6.1. Si vous avez besoin de la .NET 3.5 coureur utiliser le
\35\
répertoire.Note le
SqlServer2008ProcessorFactory
ce qui est configurable dépend de votre base de données, il ya un soutien pour: 2000, 2005, 2008, 2012 et 2014.TextAnnouncer
. Au lieu de cela, jetez leIMigrationProcessor
si vous obtenez un fichier dans une erreur d'utilisation.J'ai en fait accompli exécuter les migrations dans le application_start cependant, il est difficile de dire à partir de ce code, ce qui pourrait être mauvais... Car il est open source, je voudrais juste saisir le code et de le tirer vers votre solution et de le construire à savoir ce que la méthode Execute est de se plaindre. J'ai trouvé que le code source de Fluide Migrator est organisé assez bien.
Une chose que vous pourriez avoir à être préoccupé si c'est une application web est de s'assurer qu'aucune personne n'utilise la base de données pendant que vous procédez à la migration. J'ai utilisé la stratégie de l'établissement d'une connexion, la définition de la base de données en mode mono-utilisateur, l'exécution de l'migrations, la définition de la base de données en mode multi-utilisateur, la fermeture de la connexion. Ce gère également le scénario d'une charge équilibrée web application sur plusieurs serveurs afin de les 2 serveurs n'essayez pas d'exécuter les migrations à l'encontre de la même base de données.