删除后不创建流畅的Nhibernate映射并添加相同的数据库

时间:2013-07-10 06:38:59

标签: c# nhibernate fluent-nhibernate sql-server-2008-r2 fluent-nhibernate-mapping

我使用流畅的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创建数据库,但不在数据库中创建表,我没有任何例外。

我不知道这有什么问题。

1 个答案:

答案 0 :(得分:0)

如果您有权访问SQL事件探查器,则在执行代码时运行它并查看是否从SQL获取有关NHibernate尝试执行的代码的消息。

我见过NHibernate从SQL中获取错误并且不会将其报告给客户端的情况。这主要是外键冲突或在SQL中设置为不可为空但在NHibernate中映射为可空的列。错误的结果是未报告的SQL代码回滚。

SQL事件探查器中的错误应该可以让您更好地了解发生了什么。