快速清除NHibernate数据库

Chr*_*ert 5 c# nhibernate

我正在使用NHibernate进行ORM,一切正常.

现在我开始编写一些单元测试(使用数据库,我不想付出过多的努力来抽象它,我知道它不完美,但它的工作原理......).

我需要确保DB对于某些测试来说是完全空的.当然,我可以创建整个数据库.但这似乎有点矫枉过正,我认为需要更长的时间......

是否有DELETE_ALL命令清除所有表,我可以在NHibernate中使用?

克里斯

编辑:一个简短的更新,我决定采用SQLite方式,用NHibernate改变这个没问题.有一些陷阱,我使用这个配置,它的工作原理.否则,由于nHibernate在会话期间关闭连接,可能会出现"找不到表"错误,从而导致"丢失"数据库...

为了您的方便:复制并粘贴......

.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));
Run Code Online (Sandbox Code Playgroud)

Pac*_*aco 9

删除并重新创建数据库.您可以使用schemaexport:

var export = new SchemaExport(config);
export.Drop(false, true);
export.Create(true, true);
Run Code Online (Sandbox Code Playgroud)

对于测试而言,内存中的Sql lite比"普通"数据库运行得更快,但缺点是sql-lite方言可能与生产中的sql方言不同.