Dam*_*cus 2 c# sql nhibernate odbc
我正在开发一个有点简单数据模型的应用程序(4个表包括两个小表,有大约10行,两个更大,有数百行).我正在使用C#,目前使用OdbcDriver作为我的数据访问层.我想知道这个驱动程序或NHibernate之间的性能有什么不同吗?应用程序有效,但我想知道安装NHibernate而不是经典的OdbcDriver会让它更快吗?如果是这样,差异真的值得安装NHibernate吗?(根据我从未使用过这种技术的事实)
谢谢!
Kei*_*thS 10
简短的回答:不,在大多数情况下,NHibernate实际上会降低你的表现.
更长的答案:NHibernate使用基本的ADO.NET驱动程序,包括OdbcConnection(如果没有更好的),来执行实际的SQL查询.最重要的是,它使用不少的反射来将查询消化到SQL中,并将SQL结果转换为对象列表.这个额外的层虽然灵活且功能强大,但它的执行速度比基于DataReader的硬编码"firehose"解决方案要慢.
NHibernate可能会让你获得更快性能的外观是"延迟加载".假设您有一个人员列表,每个人都有一个PhoneNumbers列表.您正在从数据库中检索人员,只是为了获取他们的名字.基于DataReader的简单实现可能涉及为People调用存储过程,其中包括对其PhoneNumbers的连接,在这种情况下您不需要.相反,NHibernate将仅检索People,并将"代理"设置为对PhoneNumbers列表的引用; 当需要评估列表时,代理对象将执行另一个调用.如果永远不需要电话号码,则永远不会评估代理,从而省去了拔出不需要的电话号码的麻烦.
归档时间: |
|
查看次数: |
1595 次 |
最近记录: |