由于在ORM和现代数据访问方面落后,我希望摆脱DataSets (颤抖),进入一个合适的映射框架。
我已经把我的注意力放在了SQL上,我现在正在研究NHibernate,希望在我们的下一个项目中使用它。
对于旧式sql和数据集,您的sql查询显然只返回所需的数据。我还了解到,L2S还足够聪明地计算其where子句,以便它只返回所请求的对象。NHibernate是一样的吗?艾因德的Linq到NHibernate也是这样吗?
我的意思是,如果我这样做相当于:
Select * from customers where name = "fred"它会把每一个客户带到内存中,然后过滤掉非freds,还是它足够聪明,从一开始就得到它所需要的?
如果它是智能的,那么需要注意什么呢?是否有不能用这种方式计算的查询类型?我需要注意哪些性能问题?
谢谢
安德鲁
发布于 2008-12-19 16:48:49
一个快速的答案是ORM将检查属性名并将其转换为SQL查询,该查询将为您命名=.。因此,它不会将所有客户加载到内存中搜索名称。
发布于 2008-12-19 16:51:40
Nhibernate提供了几种查询数据库的不同方法。Hibernate使用类似于Sql的语法HQL,即对象上的SQL。此外,它还可以通过示例进行搜索,在其中创建一个对象并填写所需的标准,然后hibernate将对象从具有相同属性值的DB中提取出来。
在这里看一看,它会让你加快速度,冬眠之夏 lession 2和2a将更深入地回答。
HTH
骨骼
发布于 2008-12-19 18:58:57
如果您真的担心NHibernate正在生成什么查询,那么运行,找出运行或配置它的日志并打开它的SQL输出。它将显示所有的SQL语句到配置其log4net的位置。
https://stackoverflow.com/questions/381485
复制相似问题