自动分析/单元测试NHibernate行为

NOt*_*Dev 6 nhibernate profiling unit-testing nhprof

我使用NHibernate几个月,我发现它非常强大,但对我来说这是一种有时会伤害你的工具.我有很多情况,相对简单的映射更改,在LINQ查询或任何使用我的实体的代码导致意外的行为.我最"壮观的成功"是让N + 1删除和插入的读操作只是因为我在代码中而不是在数据库中对我的组件集合进行排序.

感谢NHProf,我可以跟踪这样的一些问题,但我觉得我无法确定在重构或小的需求更改之后我的数据访问层仍能正确有效地运行.在每次更改后手动测试/分析它是一种痛苦的方式.我会想到这里是一些样的方式来进行单元测试 NHibernate的行为引擎盖下,即会产生什么SQL,多少查询完成后,有多少实体加载,很多表如何加盟等.

我知道它可能有点偏离主要的ORM目的,但对于需要表现良好的应用程序,我认为低级知识比抽象更重要.

是否有任何与此想法相似的实现?如何自动分析我的NHibernate应用程序?

Die*_*hon 6

我用于此目的的是统计数据.

您可以IStatistics从会话工厂获取实例,并获得许多性能指标,包括执行的查询数,缓存未命中数,执行时间等等.

通过这种方式,您可以设置执行适当调用的单元/集成测试,并验证这些指示符是否在预期的参考参数内.