开始写博客,学习Linq(3)
为什么需要Linq?(摘自原文)
读者会发现LINQ着眼于解决编程语言和数据库之间广发存在的不统一问题。
1.常见的问题,使用.NET Framework Class Library(FCL)提供了ADO.NET,开发人员必须显式地操作数据库中的表、记录、列,而当下流行的C#语言却都是面向对象的。
为了解决上面说的ADO.NET的问题,当然可以使用某些对象/关系映射工具,但这些工具也不是完美的,存在着自身的限制。例如,用来访问数据库的工具一般没法处理其他数据源,比如XML。
并且有一件事情只用微软能够做到,而第三方对象/关系映射工具生厂商无法实现,那就是将数据访问以及查询功能集成至语言本身中。
所以引入LINQ的动机主要有两个:一是微软尚没有一套数据映射解决方案;二是借助LINQ能够将查询集成至开发语言中。
LINQ的设计目的在于,开发人员可以在其熟悉的语言中使用统一的查询访问任何数据源。
额,我感觉这部分于前面部分有重复呢,都是使用Linq可以解决的问题。
2.解决理念上的失调
这部分,文字真多了,我看了好久,都有点不耐烦了。具体值得什么意思呢?
阻抗失调,就是面向对象、关系型数据库以及xml,表现数据时并不能很好的转换(个人理解的);
对象/关系映射,首先基础数据类型就不同,其次是理论来源于不同的数据模型,比例的是关系型数据库和面向对象的模型,然后又说编程模型也不同,最后提到了封装也是不同的。
总而言之,就是关系型数据库和面向对象的类层次结构之间存在着差异。
但是,我们希望将对象模型映射到关系型数据库中,一般来说,连接面向对象语言和关系型数据库的一个解决方案是使用对象/关系映射,简而言之,我们为对象/关系映射程序提供类、数据库以及映射的配置,随后映射程序将自动完成余下的工作。比如生成SQL语句、从数据库中获取数据并填充至对象中,以及将对象持久化到数据库中等。
当然,没有那种解决方案是完美的,且对象/关系映射程序仍有改进的空间。
总结下,无法完美的转换,可以使用对象/关系或者xml映射 程序工具来解决转换的问题。当然,也只是书中抛砖引玉,最终的解决方案就是Linq喽。
“阻抗失调”让我们不得不在两边中选择其一作为“主要”的一边。在Linq中微软公司选择了编程语言作为主要的一边,因为修改C#和VB.NET要比修改SQL或XML容易得多。LINQ的主要理念是将数据查询和维护的工作紧密集成至编程语言中。
LINQ打通了对象、数据库和XML之间的很多限制,允许开发人员基于相同的语言集成特性操作3种不同领域中的数据。
这样,我有个问题,LINQ是不是包含了对象/关系或xml映射 工具的功能了,我之前是分不清Linq和EF的。
开始写博客,学习Linq(3)的更多相关文章
- (转)[BetterExplained]为什么你应该(从现在开始就)写博客
(一)为什么你应该(从现在开始就)写博客 用一句话来说就是,写一个博客有很多好处,却没有任何明显的坏处.(阿灵顿的情况属于例外,而非常态,就像不能拿抽烟活到一百岁的英国老太太的个例来反驳抽烟对健康的极 ...
- 150922-写写博客监督下不自觉的自己-PPT,Linux,HTML
开始学PHP的日子里,总是懒散的有一天没一天的.无意间听闻写博客来展示代码(现在还远远做不到哇),来监督个人每天的学习进度,鉴于自己还是爱写一点文字,但愿可以坚持下去. 凡是都喜欢有个计划,骨子里的理 ...
- 在github上写博客
在github上混了几个月,收获颇多.作为一个开源的坚定信仰者,深深觉得每一个码农都应该参与到开源社区中,github提供了一个平台,让你为开源项目提交代码变得异常简单和直接.以前由于工作异常繁忙和繁 ...
- 《REWORK》启示录 招聘笔杆子——程序员为什么值得写博客
Hire Great Writers 仿佛这是写给自己看的,不过这在其中也有着相当有趣的意义 .虽然自己算是一个能写的人,或许这算是一种不算才华的才华,写博文的意义通常不会在于去描述自己怎样,怎样.通 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十四)谈谈写博客的原因和项目优化
阶段总结 又到了优化篇的收尾阶段了,这其实是一篇阶段总结性的文章,今天是4月29号,距离第一次发布博客已经两个月零5天,这两个多月的时间,完成了第一个项目ssm-demo的更新,过程中也写了33篇博客 ...
- 写博客 Why?
博客?英文名字为blogger,它是一种网络日记. 一.我为什么要写博客? 这是我第一回写博客,写的可能不是非常的好,请多多给些意见.在平常的学习的时候,我怕忘掉自己学的知识,常常都会记录下来,但回头 ...
- 用markdown写博客
目录 用markdown写博客 前言 标题 段落 引用区块 代码块 列表 分隔线 链接 强调.加粗.下划线.删除线 图片 智能链接 表格 转义序列 用markdown写博客 前言 博客园支持用mark ...
- 对写博客的n种思考
喜欢才能坚持 开始写博客的原因非常功利,功利到不好意思说. 反正你们也懂的,就那么几种. 问题是,如果心态一直这么功利,而写博客的前期回报几乎为零,情绪会变得沮丧,不知如何继续. 不过后来想想,其实做 ...
- [BetterExplained]为什么你应该(从现在开始就)写博客
(一)为什么你应该(从现在开始就)写博客 用一句话来说就是,写一个博客有很多好处,却没有任何明显的坏处.(阿灵顿的情况属于例外,而非常态,就像不能拿抽烟活到一百岁的英国老太太的个例来反驳抽烟对健康的极 ...
- 回归写博客时间-----CeliaTodd
2019-10-17-19:28:01 记录自己的学习路程 国庆期间本来是有持续写博客的,但是有各种原因就没时间写博客了, 但是学习的进度还是没有落下的,现在正式回归写博客的时间了. 但现在不是写Py ...
随机推荐
- jquery 兼容的滚轮事件
// jquery 兼容的滚轮事件 $(document).on("mousewheel DOMMouseScroll", function (e) { ? : -)) || // ...
- OOM之类、对象、实例、实体之辨析
一.场景再现 有一个重要的概念你需要弄明白,那就是“类(class)”和“对象(object)”的区别.我用禅语来解释一下吧: 鱼和三文鱼有什么区别? ...
- 第15月第29天 ffmpeg AVERROR_EOF
1. 在直播时返回AVERROR_EOF代表流结束吗?但对方还在直播,没有结束. int ret = av_read_frame(mContext, pkt); if (ret == AVERROR_ ...
- 第5月第6天 NSOperation isConcurrent category同名覆盖
1. @implementation AFURLConnectionOperation ... - (BOOL)isConcurrent { return YES; } NSOperation调用st ...
- 阿里云3台机器组成集群配置ssh免密码登陆
1 查询阿里云局网ip 注意:需要配置同一地区同一可用区的机器 才是一个局网 2 配置好hosts文件 3 hostname确认也是正确的 4 生成公钥私钥 三台机器同样操作 ssh-keygen - ...
- CDH集群中YARN的参数配置
CDH集群中YARN的参数配置 前言:Hadoop 2.0之后,原先的MapReduce不在是简单的离线批处理MR任务的框架,升级为MapReduceV2(Yarn)版本,也就是把资源调度和任务分发两 ...
- Service的线程、工作线程、权限及系统Service
Service组件和其他组件一样,都是运行于应用的主线程当中,它们都运行于同一个单一的线程中. 可以把Service简单的理解成一个没有界面显示的Activity(这个比喻其实并不准确,因为Servi ...
- 【python】pip安装报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 7: ordinal not in range(128)
刚安装完python,准备pip安装第三方库的时候出现了一个错误: UnicodeDecodeError: ‘ascii’ code can’t decode byte 0xef in positio ...
- SpringBoot2.x个性化启动banner设置和debug日志
3.SpringBoot2.x个性化启动banner设置和debug日志 简介:自定义应用启动的趣味性日志图标和查看调试日志 1.启动获取更多信息 java -jar xxx.jar --debug ...
- android 内存泄漏,以及检测方法
1.为什么会产生内存泄漏 当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏. 2.内 ...