我尝试在我的测试项目中使用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创建数据库?
答案 0 :(得分:0)
试着替换
new SchemaUpdate(cfg).Execute(false, true)
带
new SchemaExport(cfg).Create(false, true)