2009-08-19 7 views

Répondre

4

Vous pouvez utiliser la classe SchemaExport dans NHibernate pour ce faire dans le code:

var schema = new SchemaExport(config); 
schema.Drop(true, true); 
schema.Execute(true, true, false); 
+0

'schema.Drop (true, true)' n'est pas nécessaire car Execute sera toujours supprimé avant de créer – Firo

1

déposer la base de données entière - ne laissez pas tomber la table par le tableau - qui ajoute trop d'entretien frais généraux

+0

Je voulais dire programmatique :) –

1

J'ai utilisé les méthodes utilitaires suivantes pour exécuter des scripts SQL pour la mise en place des bases de données et des données de test dans un projet que je travaille avec de temps en temps. Il a plutôt bien fonctionné:

internal static void RunScriptFile(SqlConnection conn, string fileName) 
{ 
    long fileSize = 0; 
    using (FileStream stream = File.OpenRead(fileName)) 
    { 
     fileSize = stream.Length; 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      StringBuilder sb = new StringBuilder(); 
      string line = string.Empty; 
      while (!reader.EndOfStream) 
      { 
       line = reader.ReadLine(); 
       if (string.Compare(line.Trim(), "GO", StringComparison.InvariantCultureIgnoreCase) == 0) 
       { 
        RunCommand(conn, sb.ToString()); 
        sb.Length = 0; 
       } 
       else 
       { 
        sb.AppendLine(line); 
       } 
      } 
     } 
    } 
} 

private static void RunCommand(SqlConnection connection, string commandString) 
{ 
    using (SqlCommand command = new SqlCommand(commandString, connection)) 
    { 
     try 
     { 
      command.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(string.Format("Exception while executing statement: {0}", commandString)); 
      Console.WriteLine(ex.ToString()); 
     } 
    } 
} 

J'ai utilisé le Database Publishing Wizard pour générer des scripts SQL (et dans certains cas, elles ont été éditées pour inclure uniquement les données que je veux utiliser dans le test), et juste passer les chemins de fichiers de script dans la méthode RunScriptFile avant les tests. La méthode analyse le fichier script et exécute chaque partie séparée par une ligne GO séparément (j'ai trouvé que cela a grandement aidé à résoudre les erreurs qui se sont produites lors de l'exécution des scripts SQL).

Cela fait un moment que j'ai écrit le code, mais je pense qu'il faut que le fichier script se termine par une ligne GO pour que la dernière partie soit exécutée.

0

-je utiliser Proteus (Test Unit Utilitaire), disponible sur Google code ici:

http://code.google.com/p/proteusproject/

Vous créez un ensemble de données. Chaque fois, vous exécutez un test unitaire, les données actuelles sont sauvegardées, l'ensemble de données est chargé, puis vous utilisez tout le temps le même ensemble de données pour effectuer vos tests. À la fin, les données d'origine sont restaurées.

Très puissant

HTH

Questions connexes