2009-11-08 7 views
0

J'essaye de convertir ma couche de données de Linq2Sql en nHibernate. Je pense que Xml la configuration de nHibernate est assez en arrière donc j'utilise Fluent.Fluent nHibernate continue de recréer ma base de données, pourquoi?

J'ai réussi à maîtriser, ajouter un modèle de référentiel et un modèle d'unité de travail, et mes tests unitaires semblent bons.

Cependant, maintenant que je le branche dans ma couche services, je remarque que chaque fois que je lance mon application, la base de données est recréée.

Je devine que c'est à mon code SessionProvider, je ne suis pas sûr de toutes les extensions que j'utilise. Quelqu'un peut-il faire la lumière sur la façon d'empêcher cela de se produire?

public sealed class SessionProvider 
{ 
    private static ISessionFactory _sessionFactory; 

    private static ISessionFactory CreateSessionFactory() 
    { 
     try 
     { 
      return Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2005 
           .ConnectionString(Properties.Settings.Default.DBConnection) 
           .Cache(c => c 
               .UseQueryCache() 
               .ProviderClass<HashtableCacheProvider>()) 
           //.ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHiber nate.ByteCode.Castle") 
           .ShowSql()) 
           .Mappings(m=>m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly())) 
       .ExposeConfiguration(BuildSchema) 
       .BuildSessionFactory(); 
     } 
     catch (Exception ex) 
     { 
      System.Diagnostics.Debug.WriteLine(ex.Message); 
      return null; 
     } 


    } 

    public static ISessionFactory SessionFactory 
    { 
     get 
     { 
      if (_sessionFactory == null) 
      { 
       _sessionFactory = CreateSessionFactory(); 
      } 
      return _sessionFactory; 
     } 
    } 

    public static ISession GetSession() 
    { 
     return SessionFactory.OpenSession(); 
    } 

    private static void BuildSchema(Configuration config) 
    { 
     // this NHibernate tool takes a configuration (with mapping info in) 
     // and exports a database schema from it 
     new SchemaExport(config).Create(false, true); 
    } 
} 

Répondre

3

cette ligne Retirer

.ExposeConfiguration(BuildSchema) 

En savoir plus sur les nouvelles SchemaExport (config) .Create (false, true); here

En fait, le dernier argument est sur le point de créer une base de données.

+0

Merci Mike. Et merci pour le lien aussi. – Jordan

Questions connexes