我使用流畅的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创建数据库,但不在数据库中创建表,我没有任何例外。
我不知道这有什么问题。
答案 0 :(得分:0)
如果您有权访问SQL事件探查器,则在执行代码时运行它并查看是否从SQL获取有关NHibernate尝试执行的代码的消息。
我见过NHibernate从SQL中获取错误并且不会将其报告给客户端的情况。这主要是外键冲突或在SQL中设置为不可为空但在NHibernate中映射为可空的列。错误的结果是未报告的SQL代码回滚。
SQL事件探查器中的错误应该可以让您更好地了解发生了什么。