c# - 快速清除 NHibernate 数据库

标签 c# nhibernate

我正在为 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/

相关文章:

NHibernate 2.1.2 抛出 DateTime 空溢出异常

nhibernate - 如何在 NHibernate 中将 session 作为工作单元进行管理?

c# - WPF 还是 GTK?哪一个更好

c# - 在链式构造函数中设置只读字段

c# - 如何使用 SQL 填充 Crystal Reports

nhibernate - RavenDB 4 - 更改修订时间戳

nhibernate - 我在哪里可以获得最新的 FluentNHibernate 版本?

nhibernate - HiLo 算法的一个好的 MaxLo 值是多少?

c# - 访问 Custom.Configuration 文件中的 AppSettings (CS0122)

c# - Microsoft.Web.管理: System. UnauthorizedAccessException