【问题标题】:How create database using FluentNHibernate?如何使用 FluentNHibernate 创建数据库?
【发布时间】:2017-10-28 01:55:36
【问题描述】:

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

        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;初始目录=杂志;集成 安全=真;连接 Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

我也在尝试使用另一种方法。如下所示。

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

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

System.Data.SqlClient.SqlException:无法打开数据库“杂志” 登录请求。登录失败。

我更改了连接字符串。

数据 Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\Magazine.mdf;Initial 目录=杂志;集成安全=True

就我而言,LocalDb 将是最佳选择。但与 SQLEXPRESS 的第一种情况一样,我再次收到异常。

System.Data.SqlClient.SqlException:无法附加文件 '.....\App_Data\Magazine.mdf' 作为数据库“杂志”。

我之前在 EF 中使用过 Code First,如果缺少,则使用 E​​F 创建数据库。如何使用 FluentNHibernate 创建数据库?

【问题讨论】:

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


    【解决方案1】:

    尝试替换

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

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

    【讨论】:

    • 感谢您的回答。请看看我有问题的变化。 Create(false, true) 也会引发异常。对于 LocalDB,它是 Cannot attach the file,对于 SQLEXPRESS,它是 The login failed
    • 您的连接字符串似乎有问题。尝试使用 SSMS 或其他方式连接到您的数据库
    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 2013-11-16
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多