我正在为 ORM 使用 NHibernate,一切正常。
现在我开始编写一些单元测试(使用数据库,我不想花太多精力来抽象它,我知道它并不完美,但它有效..)。
对于某些测试,我需要确保数据库完全为空。我当然可以创建整个数据库。但这似乎有点矫枉过正,我认为需要更长的时间......
是否有清除所有表的 DELETE_ALL 命令,我可以在 NHibernate 中使用?
克里斯
编辑:一个简短的更新,我决定采用 SQLite 方式,用 NHibernate 改变它没问题。有一些陷阱,我正在使用这个配置,它可以工作。否则,由于 nHibernate 在 session 期间关闭连接,导致“丢失”数据库,您可能会收到“找不到表”错误...
为了您的方便:复制并粘贴...
.Database(SQLiteConfiguration.Standard.ConnectionString("Data Source=:memory:;Version=3;New=True;Pooling=True;Max Pool Size=1;")
.Raw("connection.release_mode", "on_close"))
.Mappings(obj => obj.AutoMappings.Add(_config.APModel));
最佳答案
删除并重新创建数据库。您可以使用模式导出:
var export = new SchemaExport(config);
export.Drop(false, true);
export.Create(true, true);
内存中的 Sql lite 测试运行速度比“普通”数据库快,但缺点是 sql-lite 方言可能与生产中的 sql 方言不同。
关于c# - 快速清除 NHibernate 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094145/