2017-05-27 117 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或其他方式连接到您的数据库 –