6

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

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

我知道这可能有点偏离 ORM 的主要目的,但对于需要表现良好的应用程序,在我看来,低级知识似乎比抽象更重要。

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

4

1 回答 1

6

我为此目的使用的是Statistics

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

有了这个,您可以设置执行足够调用的单元/集成测试,并验证这些指标是否在预期的参考参数内。

于 2011-05-23T21:11:31.197 回答