LINQ to SQL、NHibernate比较(一)-- LINQ和NHibernate初体验

发布时间:2026/10/6 8:51:37

LINQ to SQL、NHibernate比较(一)-- LINQ和NHibernate初体验 研发与数据库打交道的系统的时候最过于繁琐的莫过于没有编程快感的使用ADO.NET对后台数据库进行操作因为所有的数据库连接、读取、操作千篇一律编程成为了体力活。虽然我们可以设计自己的类作为数据库访问的持久层但是每一个类都必须有不相同的SQL语句这样对于设计统一的数据库读写类造成了很大的困难。开发人员在这种情况下必须包办窗体设计、方法设计、数据库读写设计的过程这样加大了开发人员的负担也使得项目的维护和后期开发变得难以进行。2 .NET下的ORM解决方案2.1 LINQ2.1.1 LINQ简介作为微软开发的查询方案LINQ 提供了一条更常规的途径即给 .Net Framework 添加一些可以应用于所有信息源 all sources of information 的具有多种用途 general-purpose 的语法查询特性 query facilities 这是比向开发语言和运行时 runtime 添加一些关系数据 relational 特性或者类似 XML 特性 XML-specific 更好的方式。这些语法特性就叫做 .NET Language Integrated Query (LINQ) 。如果觉得上面的解释有点抽象那么可以这样理解LINQ其实就是提供了一套查询功能可以实现任何数据源的查询此处数据源不单指数据库或者XML文件而是任何集合或者实体比如我们接触各种编程语言都需要用到的数组现在不用遍历数组元素来寻找需要的项LINQ可以实现这方面的查询。LINQ查询数组图2.1 LINQ查询数组上面是最简单的LINQ实现对数组的查询泛型类型var在LINQ查询中提供了强大的委托类型支持不管查询集合中项的类型无论是intchar还是string或者类我们只用一个var就可以保存LINQ查询到的结果。程序结果如下图2.2 LINQ查询数组程序结果是不是很方便LINQ的应用远远不这些通过不同的映射方案我们可以实现对数据库LINQ To SQL对XML文件LINQ To XML的访问。2.1.2 LINQ简介表2.1 LINQ的操作符操作符说明聚合Aggregate对序列执行一个自定义方法Average计算数值序列的平均值Count返回序列中的项目数整数LongCount返回序列中的项目数长型Min查找数字序列中的最小数Max查找数字序列中的最大数Sum汇总序列中的数字连接Concat将两个序列连成一个序列转换Cast将序列中的元素转换成指定类型OfType筛选序列中指定类型的元素ToArray从序列返回一个数组ToDictionary从序列返回一个字典ToList从序列返回一个列表ToLookup从序列返回一个查询ToSequence返回一个 IEnumerable 序列元素DefaultIfEmpty为空序列创建默认元素ElementAt返回序列中指定索引的元素ElementAtOrDefault返回序列中指定索引的元素或者如果索引超出范围则返回默认值First返回序列中的第一个元素FirstOrDefault返回序列中的第一个元素或者如果未找到元素则返回默认值Last返回序列中的最后一个元素LastOrDefault返回序列中的最后一个元素或者如果未找到元素则返回默认值Single返回序列中的单个元素SingleOrDefault返回序列中的单个元素或者如果未找到元素则返回默认值相等SequenceEqual比较两个序列看其是否相等生成Empty生成一个空序列Range生成一个指定范围的序列Repeat通过将某个项目重复指定次数来生成一个序列分组GroupBy按指定分组方法对序列中的项目进行分组联接GroupJoin通过归组将两个序列联接在一起Join将两个序列从内部联接起来排序
延伸阅读

更多相关文章

2026/10/6 5:17:11

征程 6E/M Matrix 开发评板使用系列(一):开箱与点亮

1.写在前面 征程 6E/M Matrix 板卡是面向 征程 6 系列芯片开发、调试和部署验证的开发平台。对于第一次接触 Matrix 板卡的同学来说,最关键的不是马上跑模型,而是先把板卡的供电、散热、网络、串口​调试链路正确连接起来,保证板卡可以稳定上…

2026/10/4 3:47:02

井下地面视频流全域融合,矿山三维透明化视频孪生技术全解 矿道人员车辆无感追踪·多巷道摄像头拓扑组网·矿山视频孪生全域轨迹溯源技术剖析

井下地面视频流全域融合,矿山三维透明化视频孪生技术全解矿道人员车辆无感追踪多巷道摄像头拓扑组网矿山视频孪生全域轨迹溯源技术剖析一、方案顶层资质与矿山行业核心痛点1.1 技术基线与研发背书整套矿山专属视频孪生透明化体系为镜像视界浙江科技有限公司SpaceOS™…

2026/10/6 8:48:45

降AI实战:三招消除AI味,让文字恢复活人感

“降AI”这个词,今年在论文圈和职场写作圈里出现的频率肉眼可见地变高了。我第一次注意到它,是帮学生改课程论文的时候:一篇用AI工具快速生成的文献综述,信息铺得挺全,逻辑也通,可导师一眼就判定“这不是你…

2026/10/6 8:48:45

Windows共享文件夹访问报错“账户已锁定”的排查与解决

1. "引用的账户当前已锁定"到底锁的是什么 遇到这个报错时,很多人第一反应是去检查共享文件夹的权限设置,或者重新配一遍SMB协议。我在帮朋友和同事处理这类问题时发现,方向从一开始就偏了——这个报错跟共享文件夹本身的权限配置关…

2026/10/6 8:48:45

厂区人员定位系统深度解析:UWB与蓝牙混合定位选型与实施

一提到“厂区人员定位系统”,很多人第一反应就是GPS。但如果你真的去过化工厂、电厂、钢铁车间的现场,就会发现事情没那么简单——厂房里根本没有GPS信号,钢结构和密集设备会让各种无线信号乱反射,员工的安全帽、防爆服也在遮挡信…

2026/10/6 8:48:45

CSAPP第六章:存储器层次结构与缓存优化实战解析

说实话,我是在啃到《CSAPP》第六章的时候,才第一次真正理解了什么叫“程序跑得慢,很多时候不是CPU不行,而是数据在等公交车”。这本书的中文译名是《深入理解计算机系统》,“06”这个编号在绝大多数读者心里都指向同一…

2026/10/6 8:48:45

数据孤岛怎么破?iPaaS集成平台从原理到落地全解析

数据孤岛这事儿,做IT的老哥们应该都不陌生。销售用CRM,财务用ERP,运营手里一堆Excel表格,客服的工单系统又是另一个平台,各玩各的,数据对不上,报表靠人工导来导去。更头疼的是,领导一…

2026/10/6 8:43:45

SQL开发导航地图:Gudu SQL Omni插件实战

如果你和我一样,每天要在几十张表、上百个存储过程里来回确认“这个字段到底在哪些地方被用过”“这个视图到底依赖哪几张表”,那下面这些东西应该能帮到你。先说结论:我把 Gudu SQL Omni 装进 IntelliJ IDEA 之后,最直观的感受就…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑