我正在使用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)
删除并重新创建数据库.您可以使用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方言不同.