ASP.NET MVC学习---(二)EF文件结构
之前已经简单的介绍过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文件结构的更多相关文章
- ASP.NET MVC学习系列(二)-WebAPI请求
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- ASP.NET MVC学习系列(二)-WebAPI请求(转)
转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
- ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- (转)ASP.NET MVC 学习第一天
天道酬勤0322 博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅 | 管理 随笔:10 文章:0 评论:9 引用:0 ASP.NET MVC 学习第一天 今天开始第一天学习as ...
- ASP.NET MVC学习之Ajax(完结)
一.前言 通过上面的一番学习,大家一定收获不少.但是总归会有一个结束的时候,但是这个结束也意味着新的开始. 如果你是从事ASP.NET开发,并且也使用了第三方控件,那么一定会觉得ASP.NET开发aj ...
- ASP.NET MVC学习之控制器篇
一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...
- ASP.NET MVC学习之控制器篇扩展性
原文:ASP.NET MVC学习之控制器篇扩展性 一.前言 在之前的一篇随笔中已经讲述过控制器,而今天的随笔是作为之前的扩展. 二.正文 1.自定义动作方法 相信大家在开发过程一定会遇到动作方法的重名 ...
- Asp.Net MVC学习总结之过滤器详解(转载)
来源:http://www.php.cn/csharp-article-359736.html 一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...
- ASP.NET MVC学习之模型验证详解
ASP.NET MVC学习之模型验证篇 2014-05-28 11:36 by y-z-f, 6722 阅读, 13 评论, 收藏, 编辑 一.学习前的一句话 在这里要先感谢那些能够点开我随笔的博友们 ...
随机推荐
- 《c程序设计语言》读书笔记-3.6-数字转字符串最小宽度限制
#include <io.h> #include <stdio.h> #include <string.h> #include <stdlib.h> # ...
- .NET4中多线程并行方法Parallel.ForEach
原文发布时间为:2011-12-10 -- 来源于本人的百度文章 [由搬家工具导入] namespace ForEachDemo{ using System; using System.I ...
- [ CodeVS冲杯之路 ] P1576
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1576/ 这和上一道题十分的类似,所以直接秒杀 ( 上一题:http://www.cnblogs.com/hadilo/ ...
- JS日历控件集合----附效果图、源代码
http://www.cnblogs.com/yank/archive/2008/08/14/1267746.html 在进行开发的过程中,经常需要输入时间,特别是在进行查询.统计的时候,时间限定更为 ...
- UVA 306 Cipher
题意 :lucky cat里有翻译.英文也比较好懂. 很容易发现有周期然后就拍就好了 注意每组数据后边都有空行 包括最后一组.一开始以为最后一组没有空行.唉.. #include <map> ...
- shiro配置参考(一)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://ww ...
- android的百度地图开发(二) 定位
参考:http://blog.csdn.net/mr_wzc/article/details/51590485 第一步,初始化LocationClient类 //获取地图控件引用 mMapView = ...
- Dell Inspiron 7520 安装Ubuntu 14.04 LTS
我的电脑是Dell Inspiron 7520,之前用的Windows 7, 装了虚拟机,再在虚拟机里面装Ubuntu, 电脑一直卡顿,一怒之下,升级了内存,直接16G,然后,还是卡顿,CPU是i5的 ...
- (6)C#项目结构
一.项目下Properites文件夹 Properties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信 ...
- (3)C#工具箱-容器
容器特点:把控件放到容器里,移动容器控件也会跟着移动. 1.flowLayoutPanel(流布局控件) 放入控件后,会自动垂直或水平排列 拉长布局,控件自动跑到一行 2.GroupBox(组合框) ...