有关使用NHibernate CreateSQLQuery的建议是什么?

Bla*_*erX 1 sql nhibernate

我的直觉告诉我,高级的NHibernate用户会反对它,我一直在寻找对此的实际分析而没有发现任何东西,我想要解决这些问题的答案:

使用它的优点/缺点是什么?是否有任何性能影响,无论是好的还是坏的(例如,使用它来调用存储过程?)我们应该在哪些场景中使用/避免它?谁应该使用/避免它?

基本上,使用/避免它的原因是什么?为什么?

Die*_*hon 7

存在CreateSQLQuery的原因是执行以下任一查询:

  • 不支持
  • 很难写

使用任何其他方法.

当然,这通常是最后的选择,因为:

  • 它不是面向对象的(即你重新考虑表和列而不是实体,属性和关系)
  • 它将您与物理模型联系在一起
  • 它将您与特定的RDBMS联系在一起
  • 它通常会强制您执行更多工作以检索实体
  • 它不会自动支持分页等功能

但是,如果您认为特定查询需要它,请继续.确保首先学习所有其他方法(HQL,Linq,QueryOver,Criteria和Get)以避免做不必要的工作.