54 votes

Comment mettre à jour les schémas de table de base de données avec la génération de schéma NHibernate?

Je suis à essayer de comprendre comment utiliser NHibernate de configuration avec la cartographie pour mettre à jour les schémas de table, plutôt que de laisser tomber et de les recréer.

Actuellement, je suis en utilisant l' NHibernate.Tool.hbm2ddl.SchemaExport obj avec FluentNHibernate pour générer le schéma de base de données pour une base de données mysql. Bien que je ne peux pas dire que c'est un énorme problème, à chaque fois que j'appelle SchemaExport.Execute sur la base de données, il sera de toutes les tables, puis de les recréer.

Ce qui serait plus frais est si je pouvais avoir juste mettre à jour le tableau des structures de conservation des données lorsque cela est possible. Mais je n'ai pas vraiment envie d'utiliser un commerical produit, ou d'un générateur de code, parce que je n'aime pas la génération de code, en général, et je n'ai pas besoin de ce que je serais envisager de payer pour cela. Donc j'espère que la réponse serait de garder ces mises en garde à l'esprit.

67voto

Mark Rogers Points 18531

Le SchemaUpdate objet fournit le schéma de base de données mise à jour, apparemment par la génération et l'exécution d'une série de mise à JOUR SQL consolidés (ainsi que la contrainte consolidés) quand il est void Execute(bool script, bool doUpdate) la fonction est appelée. Le SchemaUpdate classe est dans l' NHibernate.Tool.hbm2ddl d'espace de noms, ce qui peut être trouvé dans la Nhibernate.dll fichier.

SchemaUpdate est mentionné dans le chapitre 15 de la nhibernate 1.0.2 outils guide, ici (article 15.1.5).

Son utilisation est décrite dans "Le NHibernate FAQ" qui a un exemple plus complet de comment utiliser SchemaUpdate ici. Sur cette page, l'exemple suivant test est utilisé, et il y a une brève explication de son utilisation.

[Test]
public void Update_an_existing_database_schema()
{
    _cfg = new Configuration();
    _cfg.Configure();
    _cfg.AddAssembly(Assembly.LoadFrom("DataLayer.dll"));
    var update = new SchemaUpdate(_cfg);
    update.Execute(true, false);
}

Voici un blog que j'ai écrite et qui a un peu plus de détails sur la façon SchemaUpdate œuvres.

7voto

Mauricio Scheffer Points 70470

Découvrez SchemaUpdate .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X