Lightspeed vs NHibernate

Pap*_*ndy 13 .net nhibernate comparison orm lightspeed

LightSpeed的体验是什么?Mindscape提供的比较并没有对NHibernate说太多.Lightspeed似乎很灵活,但我对性能的看法并不多.Lightspeed的表现如何?使用Lightspeed还有什么缺点吗?

Dan*_*son 11

在过去的六个月里,我一直在工作时使用NHibernate和Active Record,在业余时间使用LightSpeed.

优点/缺点 到目前为止,我发现LightSpeed和NHibernate都具有Active Record,可以直接学习.

我还没有找到LightSpeed的缺点(尚未).我最喜欢的功能是:

  • 约定优于配置.这节省了大量时间并提供了一致的代码.
  • 模型类和配置生成器.
  • 支持Linq和MySQL 5.

我最喜欢Active Record的功能是:

  • 无需配置XML,最常见的配置选项是自动提供的.
  • NHibernate的灵活性在需要时仍然可用(例如标准查询).

Active Record对我来说的缺点是:

  • 似乎有更多的Ruby on Rails代码示例而不是C#示例

性能 我还没有(还)将两种产品并排比较并同时对两者进行性能测试.

我猜想NHibernate会受到更深层次的层次结构的影响.在使用ANTS Profiler优化我的代码时,我发现对于一个简单的查询,在生成实际的SQL查询之前,通过NHibernate类调用后调用.

当然,它产生的查询将对ORM的最终性能产生重大影响.

LightSpeed和NHibernate都提供延迟加载,Active Record使NHibernate变得简单.

我认为使用Lightspe使用Linq优化查询更容易,对于维护代码的人来说更清晰.虽然通常不建议编写NHibernate HQL.

  • Lightspeed的缺点:主键总是必须在模型中被称为*Id*,而Lightspeed希望它们是一个自动计算的单个字段.根据他们自己的网站:"我们不希望主键具有任何商业价值".复合键支持有点缺乏,并且在运行LINQ查询时检查SQL分析器显示它们的实现远未完成......缓存和预测都没有使用LINQ正常工作(尽管Mindscape的专有机制按照承诺工作). (4认同)

Nic*_*ise 7

关于性能,从这个页面

渴望和懒惰加载没有N + 1问题.包括"命名聚合".也就是说,给特定的热切载荷图命名.观看截屏视频.

不要低估这一点.这意味着如果您加载200个项目的列表,MOST ORM将在很多情况下运行201个查询.Lightspeed没有.这是(非常)少数人之一.

如果你正在寻找一些在几个边缘情况下快几百毫秒的东西,祝你好运基准测试.我在理论上喜欢NH,而且我认为我从来没有使用ORM,但对于我所做的大部分工作,NH总是过度杀伤 - 我最终花了很多时间维护元数据,类文件,映射等等,有趣......测试.好吧,无论如何,这对我们来说.

  • 如果映射是个问题,请使用Fluent-NHibernate或ActiveRecord (3认同)