2017-05-27 5 views
0

J'essaie d'utiliser FluentNHibernate dans mon projet de test. Le code suivant génère des tables dans la base de données existante:Comment créer une base de données en utilisant FluentNHibernate?

 var sessionFactory = FluentNHibernate 
      .Cfg.Fluently.Configure() 
      .Database(
       MsSqlConfiguration.MsSql2008.ConnectionString(
        c => c.FromConnectionStringWithKey("DefaultConnection"))) 
      .CurrentSessionContext("web") 
      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SqlCommandFactory>()) 
      .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true)) 
      .BuildSessionFactory(); 

Cela fonctionne lorsque la base de données existe déjà. Mais comment créer une base de données si elle est absente? La chaîne de connexion à la base de données semble suivante:

Data Source = MAIN \ SQLEXPRESS; Initial Catalog = Magazine, intégré Security = True; Connect Délai d'attente = 15; Crypter = false; TrustServerCertificate = True; ApplicationIntent = ReadWrite ; MultiSubnetFailover = False

Je suis également essayer d'utiliser une autre méthode. Indiqué ci-dessous.

new SchemaExport(cfg).Execute(true, true, false) 

Dans ce cas, j'obtiens une autre exception.

System.Data.SqlClient.SqlException: Impossible base de données ouverte "Magazine" demandée par la connexion. La connexion a échoué.

Je modifie la chaîne de connexion.

données Source = (localdb) \ v11.0; AttachDbFilename = | DataDirectory | \ Magazine.mdf Initial Catalog = Magazine; Integrated Security = True

localdb serait la meilleure option dans mon cas. Mais comme dans le premier cas avec SQLEXPRESS j'ai encore reçu une exception.

System.Data.SqlClient.SqlException: Impossible de joindre le fichier '..... \ App_Data \ Magazine.mdf' comme base de données 'Magazine'.

Je suis utilisé Code First pour EF avant et EF créer une base de données si elle est manquante. Comment puis-je créer une base de données en utilisant FluentNHibernate?

Répondre

0

Juste essayer de remplacer

new SchemaUpdate(cfg).Execute(false, true) 

avec

new SchemaExport(cfg).Create(false, true) 
+0

Merci pour la réponse. Pleace regarde mes changements en question. 'Create (false, true)' déclenche également une exception. Dans le cas de LocalDB, il s'agit de 'Impossible d'attacher le fichier' et dans le cas de SQLEXPRESS, c'est' L'ouverture de session a échoué'. – Seva

+0

Il semble que quelque chose ne va pas avec votre chaîne de connexion. Essayez de vous connecter à votre base de données en utilisant SSMS ou autre chose –