我使用NHibernate几个月,我发现它非常强大,但对我来说,这种工具有时会伤害你。我有很多情况,相对简单的映射更改,在LINQ查询或任何使用我的实体的代码导致意外的行为。我最“壮观的成功”是让N + 1删除和插入的读取操作只是因为我在代码而不是数据库中对我的组件集合进行排序。
感谢NHProf我可以跟踪这样的一些问题,但我觉得我无法确定在重构或小的需求更改之后我的数据访问层仍能正常运行且有效。在每次更改后手动测试/分析它是一种痛苦的方式。我在这里期待的是某种方式单元测试 NHibernate的行为引擎,即生成什么SQL,完成了多少查询,实体有多少已加载,加入了多少表等。
我知道它可能有点偏离主要的ORM目的,但对于需要表现良好的应用程序,我认为低级知识比抽象更重要。
这个想法是否有类似的实现?如何自动分析我的NHibernate应用程序?
答案 0 :(得分:6)
我用于此目的的是统计。
您可以从会话工厂获取IStatistics
个实例,并获得很多的性能指标,包括执行的查询数,缓存未命中数,执行时间等等。
通过这种方式,您可以设置执行适当调用的单元/集成测试,并验证这些指标是否在预期的参考参数范围内。