2011-05-23 42 views
6

我使用NHibernate相当密集的几个月,我觉得它非常强大,但对我来说,这是一种有时会伤害到你的工具。我有很多情况,映射的相对简单的变化,在LINQ查询或使用我的实体的任何代码导致意外的行为。我最“壮观的成功”是让N + 1删除和插入的读取操作,仅仅是因为我正在将代码中的组件集合排序而不是数据库中。自动分析/单元测试NHibernate的行为

感谢NHProf我可以跟踪一些类似这样的问题,但我觉得我不能肯定重构或小的需求变更后,我的数据访问层仍然能够正常运作和有效。在每次更改后手动测试/分析它都很痛苦。我期望的是某种方式单元测试 NHibernate的行为底下,即什么SQL生成,有多少查询完成,有多少实体加载,多少表加入等。

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

有没有类似于这个想法的实现?我如何自动化我的NHibernate应用程序分析

回答

6

我用于此目的的东西是统计

您可以从您的会话工厂得到IStatistics实例,并得到大量的性能指标,包括执行的查询次数,高速缓存未命中,执行时间,等等

通过此功能,您可以设置执行适当调用的单元/集成测试,并验证这些指标是否在预期参考参数内。