小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03
Entity Framework 4.1/4.3 之一 (概念篇)
前序:
大家好,我都想死你们了。因为我想写个Entity Framework 系列的文章,所以在之一这里我写了下前序,一方面讲一下我写系列文章的出发点,二方面讲一下写的思路。很长时间没有在博客园上发表文章了,多数时间在充当看客。有深度,有广度,有吸引度,有重点,这些都是我喜欢博客园的原因。
1、出发点:我用过 .Net Framework 3.5 中的Entity Framework(本文中我们称其为Entity Framework 3.5)。
当时用起来的感觉相当好,开发起来的效率提高了,开发人员关注点从数据库转移到了表对象(即Entity Framework 3.5 的数据实体,是对数据库表的对象映射),但不得不说,当时的Entity Framework 3.5还是初级产品,存在许多不足。这些不足很多在Entity Framework 4.1 中得到了改善。由于Entity Framework 很好的体现了ORM的思想,非常强大并且越来越灵活,所以我对Entity Framework 4.1 充满信心。这也是写本文的出发点。
补充:网上已经有很多这样的系列文章,我写这个系列的最重要的出发点也是做为一段学习的总结。
2、思路:系列文章中我会从概念入手,然后植入实例,并且会穿插Entity Framework 4.1 相对于 Entity Framework 3.5 的改进行和这些改进的优势。
正文:
提示:大家千万别纠结在这些充斥着大量英文单词及英语缩写的概念上,您先做个了解即可。在系列文章讲完后,这些该死的概念也就自然而然的理解了。
有时候概念看得抑郁的时候,大可说声 “Fuck” 释怀一下。
概念
1、Entity Framework: Entity Framework 的全称是 ADO.NET Entity Framework, 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。
ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有 Entity Client,Object Context 以及 LINQ 可以使用。
(1)、Conceptual Schema:定义概念模型(.csdl)。
(2)、Mapping Schema:定义存储模型与概念模型之间的映射(.msl)。
(3)、Storage Schema:定义存储模型(又称逻辑模型)。
2、Code Frist
Code Frist 是代码先行的意思,什么是代码先行呢,这个思想在Entity Framework 4.1 中有很好的体现。即先编写业务程序,后生成数据库及各种数据表。不过我自己还是习惯于先建好数据库及数据表。然后在与Entity Framework 做映射。我个人觉得这种方式比较靠谱。
3、Poco
Poco是Entity Framework 4.0 中引入的,叫简单传统CLR对象(Plain Old CLR Oject/POCO)。这样做的好处是实体对象可以独立于Entity Framework 而存在。(这里可能大家不明白,没关系,千万别钻牛角尖,有个念相就是,后面你就会恍然大悟)。
这种独立可以让Entity Framework 更好的支持测试驱动开发和领域驱动开发。
其实POCO的思想是从Java中引入的,说句不好听的,C#中好多好的理念多是从Java中引入的,在此我表示中立。你愿意的话,可以查POJO
4、LINQ to Entities
提供语言集成查询 (LINQ) 支持用于查询在概念模型中定义的实体类型。
5、ObjectContext
网上关于ObjectContext的定义都比较字多,看起来想吐血。我来大话一下,ObjectContext是Entity Framework中非常重要的一个类库,我们就把它理解成类库,它提供了许许多多的方法,用来支持我们对Entity的操作。意思就是,微软给我们写了一个方法库,咱调用即可。
6、DBContext
DBContext是在Entity Framework4.1中引入的,它与ObjectContext作用相似,有人问,那作用相似为什么要引入DBContext呢?是啊,我也想问这个问题,微软件给我的解释是DBContext是一个轻量级的,相对于ObjectContext而言DBContext更加的轻便实用而且灵活。具体这些优点的体现,我会在后续的文章中一一表现。
7、博客园中有这方面的介绍,网址是http://kb.cnblogs.com/zt/ef/ 非常不错,与大家分享。
尾续:
这里没有写Entity Framework的优点,为什么呢,因为我想通过事实来说话,来证明它的优点和优势。用事实来说话,我不是今日说法,我是今日之说Entity Framework。
好了,基础的概念介绍完毕,您先别急着记忆,我的意见是这篇您只做个理解,后续的文章中会让这些定义暧时间真相大白。
谢谢大家百忙之中抽时间观赏,发自肺腑的感谢。有写的不好的地方请大家不吝指较,小弟虚心接受。
百灵注:本文版权由百灵和博客园共同所有,转载请注明出处。
助人等于自助! [email protected]
参考页面:http://qingqingquege.cnblogs.com/p/5933752.html