2011-07-28 3 views
0

Je construis une application WPF composite (Prism). J'ai réussi à construire des éléments de base: par exemple, la découverte de modules à partir d'un dossier. J'utilise également NHibernate (Fluent) pour conserver les données. J'ai été capable de séparer les modules afin que chacun ait son propre modèle et mappage, et quand Prism ajoute un module, il ajoute également des mappings à ma configuration nh.Application composite NHibernate - enregistrements de démarrage pour le module

Ce que je voudrais faire est d'insérer quelques enregistrements de démarrage quand un module, qui n'a jamais été démarré, est activé. Par exemple:

Lorsque je démarre mon application pour la première fois, elle détecte qu'il n'y a pas de base de données et en crée une, uniquement avec une table de configuration. Cette table contient des informations sur le module qui est activé. Ensuite, l'administrateur peut configurer l'application via l'interface utilisateur quels modules doivent être activés. La prochaine fois que l'application démarre, elle détecte les nouveaux onglets des nouveaux modules activés et crée leurs tables à l'aide de NH UpdateSchema. Ce que je voudrais faire est d'insérer aussi quelques enregistrements de démarrage avec cette table créer. Je pense que cela devrait être fait par NH événements (NH documentation on events). Quelque chose comme 'PostTableCreateEvent' serait bien mais je ne trouve rien de tel.

L'un de vous a-t-il fait quelque chose comme ça?

Répondre

1

Les événements sont déclenchés dans les sessions, mais Schemaexport prend des sessions de session ou des sessions, vous ne pouvez donc pas vous y connecter. Pour ce que vous voulez, il y a <database-object><create>INSERT ...</create><drop></drop></database-object> dans les mappages xml ou sql simple puisque FNH ne supporte pas <database-object> afaik.

Option 1: ajouter les correspondances fluides et hbm.xml sur la création de NH-configuration et embed Mappages avec <database-object>

Option 2: Les modules permettent de prendre des mesures supplémentaires (sql) après la création de tables (pour un de mes projets j'ai enveloppé Schemaexport dans ma propre classe/méthode qui crée également la base de données elle-même qui n'est pas géré par schemaexport et insère des données personnalisées comme schemaversion et configs)

+0

Merci Firo, je pense que je vais aller avec la deuxième option – bodziec

Questions connexes