2009-09-22 6 views
1

Y at-il un problème avec ce code? Je ne reçois rien de généré et aucune exception n'est levée.SchemaExport avec FluentNhibernate

public static void ExportSchema() 
     { 
      Configuration cfg = LoadDefaultConfiguration(); 
      Fluently.Configure(cfg) 
       .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("dnnSphere.Meta"))) 
       .ExposeConfiguration(c => new SchemaExport(c).SetOutputFile("myDDL.sql").Execute(true,true,false)); 
     } 

Répondre

6

Cela dépend de ce que vous voulez faire. Si vous utilisez par exemple un SQLite en mémoire DB, je ne l'ai jamais eu à travailler à moins que je spécifie la connexion. Cela signifie que je dois ouvrir une session et obtenir la connexion de la session en premier.

protected InMemoryFixture() 
    { 

     Configuration config = GetConfig(); 
     ISessionFactory sessionFactory = config.BuildSessionFactory(); 


     ISession session = _sessionFactory.OpenSession(); 

     new SchemaExport(_config).Execute(true, true, false, session.Connection, Console.Out); 

    } 

    private Configuration GetConfig() 
    { 
     return GetMappings() 
      .Database(SQLiteConfiguration.Standard.InMemory) 
      .BuildConfiguration(); 
    } 

    private FluentConfiguration GetMappings() 
    { 
     return Fluently.Configure().Mappings(m => m.FluentMappings.AddFromAssemblyOf<NewsMap>()); 
    } 

Ensuite, il y a aussi SchemaExport (CFG) .Create (true, true); et SchemaUpdate (cfg) bien sûr.

+0

Non J'utilisais MSSQL 2005. Le problème était que l'une des colonnes s'appelait "Schema". Maintenant que j'ai résolu que j'ai essayé le fournisseur SQLLite et que j'obtiens une erreur: L'implémentation IDbCommand et IDbConnection dans l'assembly SQLite.NET est introuvable. Assurez-vous que l'assembly SQLite.NET se trouve dans le répertoire de l'application ou dans le Global Assembly Cache. Si l'assembly est dans le GAC, utilisez l'élément dans le fichier de configuration de l'application pour spécifier le nom complet de l'assembly. C'est ce que vous obtenez? – epitka

+0

Ceci est un problème commun. Tout d'abord, la référence SQLite doit être définie pour être copiée localement (propriétés de référence), puis vous devez générer le projet avant de l'exécuter. Rappelez-vous que j'utilise principalement SQLite pour tester, mais c'est vraiment chouette! :) Dans le cas de MSSQL 2005, vous devriez être d'accord avec ce que vous aviez, même si j'utilise SchemaExport (cfg) .Create (true, true); avec succès de création ici. – mhenrixon

Questions connexes