3

我有一个基于简单NHibernate的应用程序,我在内存中对其进行单元测试SQLite。每当测试失败时,例如由于重复的实体,单元测试会失败并出现错误“没有这样的表 TABLE_NAME”错误,而不是显示原始错误。

如果我切换到真实文件数据库,所有测试(通过或失败)都会正确评估。这怎么可能,我该如何纠正?

4

1 回答 1

3

这通常是由于未将 SchemaExport 与内存数据库一起使用而引起的。Sqlite 内存数据库依赖于连接,因此每个连接都有自己的数据库。

new SchemaExport(config).Create(false, true); // creates database, fill it and throws away

代替

using (var session = sessionfactory.OpenSession())
{
    new SchemaExport(config).Execute(false, true, false, session.Connection, null);

    // use session in test
}
于 2012-06-08T09:03:54.090 回答