2

我正在使用流利的 nhibernate 在运行时使用 3 个会话创建 3 个数据库。

 ISessionFactory sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration
            .MsSql2008
            .ConnectionString(c => c
                .Server(databaseServer)
                .Database(dataBaseName)
                .Username("sa").Password("sa123_MTTS")))
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateSessionFactory>())
                .ExposeConfiguration(c => c.SetProperty("command_timeout", (System.TimeSpan.FromMinutes(10).TotalSeconds).ToString()))
                .ExposeConfiguration(BuildSchema)
                .BuildSessionFactory();

private static void BuildSchema(Configuration config)
{
    new SchemaUpdate(config).Execute(false, true);
}

前任:

在这里,我正在创建名称为“123”、“234”、“345”的数据库。

然后我删除数据库 123。

删除后我也关闭了会话

sessionfactory.Close(); 

现在我再次添加一个与已删除数据库同名的数据库“123”。

SchemaUpdate(config).Execute() 

叫做。Nhibernate创建了数据库,但是数据库中没有创建表,我没有得到任何异常。

我不知道这有什么问题。

4

1 回答 1

0

如果您有权访问 SQL Profiler,请在执行代码时运行它,看看您是否从 SQL 中获得了一些关于 NHibernate 尝试执行的代码的消息。

我见过的情况是 NHibernate 从 SQL 中得到一个错误并且没有将它报告给客户端。这主要是外键违规或在 SQL 中设置为不可为空但使用 NHibernate 映射为可空的列。错误的结果是未报告的 SQL 代码回滚。

SQL Profiler 中的错误应该让您更好地了解正在发生的事情。

于 2014-01-15T21:34:50.857 回答