如何使用FluentNHibernate创建数据库?

时间:2017-05-27 07:01:51

标签: c# nhibernate fluent-nhibernate code-first

我尝试在我的测试项目中使用FluentNHibernate。下面的代码在existsin数据库中生成表:

        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 =假

我也尝试使用其他方法。如下所示。

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

在这种情况下,我得到另一个例外。

  

System.Data.SqlClient.SqlException:无法打开数据库&#34; Magazine&#34;   登录请求。登录失败。

我更改连接字符串。

  

数据   源=(的LocalDB)\ V11.0; AttachDbFilename = | DataDirectory目录| \ Magazine.mdf;初始   Catalog = Magazine; Integrated Security = True

在我的情况下,

LocalDb将是最好的选择。但是在SQLEXPRESS的第一个案例中,我再次收到了一个例外。

  

System.Data.SqlClient.SqlException:无法附加文件   &#39; ..... \程序App_Data \ Magazine.mdf&#39;   作为数据库&#39;杂志&#39;。

我之前使用的是Code First for EF,如果缺少,则使用EF create database。如何使用FluentNHibernate创建数据库?

1 个答案:

答案 0 :(得分:0)

试着替换

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

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