2017-05-27 152 views
0

我想在我的測試項目中使用FluentNHibernate。下面的代碼在數據庫中生成表格:如何使用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(); 

它在數據庫已經存在時有效。但是,如果數據庫不存在,如何創建數據庫? 連接字符串到數據庫看起來如下:

數據源= MAIN \ SQLEXPRESS;初始目錄=雜誌;集成 安全= TRUE;連接 超時= 15;加密= FALSE; TrustServerCertificate = TRUE; ApplicationIntent =讀寫; MultiSubnetFailover = False

另外我嘗試使用另一種方法。如下所示。

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

在這種情況下,我得到另一個例外。

System.Data.SqlClient.SqlException:無法打開登錄所請求的數據庫「Magazine」 。登錄失敗。

我更改連接字符串。

數據 源=(的LocalDB)\ 11.0; AttachDbFilename = | DataDirectory目錄| \ Magazine.mdf;初始 目錄=雜誌;集成安全性=真

的LocalDB將是最好的選擇在我的情況。但正如在SQLEXPRESS的第一個案例中,我再次收到異常。

System.Data.SqlClient.SqlException:無法附加文件 '..... \程序App_Data \ Magazine.mdf' 數據庫 '雜誌'。

我使用代碼優先EF前和EF創建數據庫,如果它丟失。我如何使用FluentNHibernate創建數據庫?

回答

0

剛剛嘗試與

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

感謝答案更換

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

。 Pleace看看我的問題。 'Create(false,true)'也會引發異常。對於LocalDB,它是「無法附加文件」,並且在SQLEXPRESS的情況下它是「登錄失敗」。 – Seva

+0

它看起來像你連接字符串有問題。嘗試使用SSMS或其他方式連接到您的數據庫 –

相關問題