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

发布时间:2026/10/13 9:48:29

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/11 6:43:50

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

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

2026/10/12 16:45:53

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

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

2026/10/13 13:06:38

SpringBoot猫咖管理系统:从选题到部署的毕设全攻略

带了几届毕业生之后,每年到了三四月份总有人来问我同一句话:毕设到底选什么题目既好写又能过。今年问得最多的是Java方向,而且越来越多的人把目光放到SpringBoot系的项目上。如果你也在物色一个贴近生活、业务完整度够、答辩时还有东西可讲的…

2026/10/13 13:06:38

CFF_Explorer:二进制CFF表解析与逆向排查实战

简介:CFF_Explorer 是一款面向程序员、逆向工程师与安全研究人员的 Windows 文件格式分析工具,尤其擅长解析 PE 可执行文件,可查看并编辑文件头、节区、资源、导入导出表及代码签名等关键结构,适用于软件调试、恶意软件分析与格式…

2026/10/13 13:06:38

Flink CDC 3.0 实战:MySQL 到 Doris 实时同步与断点续传

简介:这份资源是尚硅谷研究院编写的Flink CDC 3.0技术文档,面向有一定Flink基础、从事大数据处理与实时数据同步的研发工程师,帮助读者掌握变更数据捕获原理并落地MySQL到Doris的Streaming ETL链路。文档从CDC概念切入,对比基于查…

2026/10/13 13:01:37

腾讯开源 Octop:一条命令跑起来的多人 AI 助手

最近在 GitHub 趋势里反复刷到一个名字:Octop。 一开始我以为又是哪个个人开发者的玩具项目,点进去一看,仓库挂在 TencentCloud 组织下,是腾讯云开源的一个自托管 AI 助手。今天(10 月 9 日)晚上我看的时候…

2026/10/13 5:19:27

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/13 0:04:41

基于Triton部署YOLO目标检测:从训练脚本到线上服务

简介:这份资源面向希望将目标检测模型落地到生产环境的深度学习开发者与算法工程师,聚焦于用 Triton Inference Server 部署 YOLOv9 的完整实战方案,解决从训练权重到线上推理服务之间的工程化难题。压缩包共 16 个文件,约 886KB&…

2026/10/13 0:04:41

手把手教你云端部署Qwen-Image-2.1:从GPU选型到在线文生图服务

Qwen-Image-2.1 这个开源的图像生成模型,最近在内容创作和 AI 应用圈子里热度相当高。它属于通义 Qwen 系列里的视觉生成分支,让我眼前一亮的是它对中文长文本的理解能力——以前用那些老方案生成带中文文字的图,十个里九个是“乱码印刷体”&…

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

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

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