之前已经简单的介绍过ORM框架和EF

也了解了EF的种种优点

那么这个EF到底长啥样子都还没见过呢

别着急

接下来,科学教育频道--走近科学

带你走进EF的内心世界~

那么接下来就是~

等等等等...

在实际操作之前

我们有必要先理解清楚 对象关系映射 到底是啥

有同学会问

了解这做什么

学会怎么用不就好了?

这你就大错特错了



如果这时候你要把EF当做你的老婆

你选老婆的时候会这么不在乎吗~

如果你什么都不知道娶了一个老太太


那也是老婆啊
只不过是老了一点而已,人家年轻的时候也是江南一枝花呢!


其实就是为了强调学知识要了解原理,理解透彻这个道理而已~~

废话不说~上一张本菜自己画的对象关系映射图

原谅本菜水平有限= =

如果看不懂,请google之~

相信会有让你满意的答复

那么现在我们就来开始解剖EF~

但是解剖之前肯定是需要一个EF文件呀

为了方便,本菜建了个控制台程序,并且准备了一个数据库

关系图:

项目上右键->添加->新建项

选择ADO.NET实体数据模型

有的同学使用vs2010添加项的时候可能会没有这个ADO.NET实体数据模型

那可能是因为没有安装这个模板

网上下一个下来安装就ok啦

你问为什么我会知道这么多?

因为我以前用vs2010的时候也没有...shit!

选择从数据库中生成(DbFirst)

然后...(这里略过一些简单的添加过程)

添加完成之后会发现项目中对了一个小玩意儿

贴图出来晒晒

没错就是她,后缀名为edmx的家伙,这就是传说中的EF

双击edmx看看这到底是个啥

是不是发现和数据库中的关系图很像?

这就是EF的可视化的关系模型

你可以再这里随意的添加你想要的属性

生成数据库的时候会将新增的属性更新到数据库对应的表中

并将关系映射保存在xml中

我们可以通过这个来设计实体数据模型,而不必自己辛苦的编写xml代码

这就是二房的威力呀!

不信你可以试试,我会骗你?

那么从头到尾一直在说关系映射保存在一个xml文档中

那这个xml文档在哪,怎么啥都看不到

别急~

右键edmx文件->打开方式,选择xml文本编辑器

点击确定之后

接下来

就是见证奇迹的时刻!

哇靠!这一大坨什么鬼东西!

没错,它确实是鬼东西,乱七八糟的反正我是看不懂= =

但是我看懂了一个

里面都是xml代码

咦..

edmx的关系图变成了一个xml文档

这搞啥飞机?

其实这个edmx文件本身就是一个xml文档,而且就是我们苦苦寻找的那个保存关系映射的xml文档!

所以在操作实体关系图的时候其实就是在编写对象关系的xml代码

是不是很人性化

这个老婆越看越喜欢呀~

现在我们将这个xml代码折叠一下

可以看到整个文档可以分为三个部分

SSDL content

CSDL content

C-S mapping content

本菜英文不是很好所以看不懂...

但是我们既然知道这个xml文件的作用是保存对象关系的映射

那么我们可以来猜测一下

S开头的那家伙,好像SQL也是S开头的

先打开它看看

仔细看看也许你会发现下面的节点

咦,这个好像是数据库中T_Users表和里面字段的信息也,然后在看到有一个Type="nvarchar(max)"这不就是数据库表字段的类型吗!

没错,SSDL content里面保存的就是数据库中表的信息

那么我们再来看看CSDL content

打开它还是会发现有一个一样的节点

但是这个节点属性的类型明显不一样,这不就是我们很熟悉的C#中的类型吗

那么这个CSDL content保存的就是程序中实体类的信息

那么最后的C-S mapping content就很明显了

肯定是保存表和类的对应关系

不信你打开瞧瞧

我会骗你?

EF会根据这个edmx的xml文档来生成EF数据上下文

还有对应数据库表的实体类

你猜猜哪个是数据上下文哪个是实体类?

别逗了好吗...

Model.Context.cs

和T_Users.cs  T_Products.cs很明显了吧...

那么后缀名tt的东西是啥?

这些其实是模板文件

EF根据xml生成这些模板

然后根据模板文件生成的数据上下文和实体类

好了,EF的大概文件结构就是这样

是时候休息了~

欲知后事如何,且听下回分解

ASP.NET MVC学习---(二)EF文件结构的更多相关文章

  1. ASP.NET MVC学习系列(二)-WebAPI请求

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  2. ASP.NET MVC学习系列(二)-WebAPI请求(转)

    转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...

  3. [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参

    [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...

  4. ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  5. (转)ASP.NET MVC 学习第一天

    天道酬勤0322   博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅  | 管理 随笔:10 文章:0 评论:9 引用:0 ASP.NET MVC 学习第一天 今天开始第一天学习as ...

  6. ASP.NET MVC学习之Ajax(完结)

    一.前言 通过上面的一番学习,大家一定收获不少.但是总归会有一个结束的时候,但是这个结束也意味着新的开始. 如果你是从事ASP.NET开发,并且也使用了第三方控件,那么一定会觉得ASP.NET开发aj ...

  7. ASP.NET MVC学习之控制器篇

    一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...

  8. ASP.NET MVC学习之控制器篇扩展性

    原文:ASP.NET MVC学习之控制器篇扩展性 一.前言 在之前的一篇随笔中已经讲述过控制器,而今天的随笔是作为之前的扩展. 二.正文 1.自定义动作方法 相信大家在开发过程一定会遇到动作方法的重名 ...

  9. Asp.Net MVC学习总结之过滤器详解(转载)

    来源:http://www.php.cn/csharp-article-359736.html   一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...

  10. ASP.NET MVC学习之模型验证详解

    ASP.NET MVC学习之模型验证篇 2014-05-28 11:36 by y-z-f, 6722 阅读, 13 评论, 收藏, 编辑 一.学习前的一句话 在这里要先感谢那些能够点开我随笔的博友们 ...

随机推荐

  1. BZOJ2879 [Noi2012]美食节 【费用流】

    题目 CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽管所有的菜品都很可 ...

  2. 威士忌(whiskey)

    威士忌(whiskey) 题目描述 Alan 喝了假威士忌,想问你一个问题: nvliu66 推荐大家读三本书<百年孤独>.<城市发展史>.<美国大城市的生与死>, ...

  3. 刷题总结——子串(NOIP2015)

    题目: 题目背景 NOIP2015 提高组 Day2 T2 题目描述 有两个仅包含小写英文字母的字符串 A 和 B .现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在 ...

  4. Codeforces Round #357 (Div. 2) B

    B. Economy Game time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. CI的多级目录的功能

    https://segmentfault.com/q/1010000008317555?_ea=1621531

  6. mac的vim使用

    再使用Mac编辑文件时感觉非常不爽,没有语法高亮,只能通过设置改变所有字体为同一个颜色,看起来还是别扭, 于是找到方法使用vim时可以实现语法高亮显示,操作步骤如下: 1.进入/usr/share/v ...

  7. codechef AUG17 T2 Chef and Mover

    Chef and Mover Problem Code: CHEFMOVR Chef's dog Snuffles has so many things to play with! This time ...

  8. 动画-CAAnimationGroup(动画组合)

    动画-CAAnimationGroup(动画组合) 我们知道IOS可以完成多种类型的动画,但是如果我们想在同一个时间端内同事完成两种或者两种以上的动画组合的时候是不是可以呢?答案是肯定的. 这里我们有 ...

  9. centos 安装使用smb

    http://blog.csdn.net/edu_enth/article/details/52964295

  10. linux进程地址空间--vma的基本操作【转】

    转自:http://blog.csdn.net/vanbreaker/article/details/7855007 版权声明:本文为博主原创文章,未经博主允许不得转载. 在32位的系统上,线性地址空 ...