ADO.NET 之 Entity Framework 基础
Entity Framework(EF)是使用直接映射到应用程序中业务对象的对象模型于关系数据库进行交互。它没有将数据视为行和列的集合,而是将其视为强类型对象(成为实体)的集合。
术语:LinQ to Entity 是指ADO.NET EF实体对象使用LINQ查询。 LINQ TO SQL 与 ADO.NET EF接近,但使用的情况很少,有一次使用LinQ to SQL 做过一个小网站,感觉比三层使用方便一些,但数据量不大也就无所谓了。 LinQ to SQL 查询 的介绍。
EF模式会使代码库显得复杂,如果你掌握LINQ,使用EF还是很好的。小量数据可以还是使用以前的,如果数据量比较大使用EF就很好。
实体的作用
强类型称为实体。正式名称为 实体数据模型 (EDM) 。它是一组映射到物理数据库的客户端类,但是这些实体没有必要与数据库架构的命名约定完全一致。你可以根据具体的情况该名称,定义不同的属性名,这些属性讲映射到目标表的各个列。
在大多数情况下,客户端实体类的名称都与关系型数据库表相同,你也可以修改它的名称,主要看情况。
Entity Framework 的基础知识
EF API 的两个关键部分为 对象服务 和 实体客户端。
①对象服务的作用
对象服务是EF中的一部分,它在代码中对客户端实体进行控制。例如:对象服务跟踪你对实体的更改(如将汽车的颜色由绿色改为红色),管理实体间的关系(如查找用户Steve Hagen的所有订单)并提供将更改保存到数据库的方法,以及用XML或二进制序列化服务对实体状态进行持久化的方法。
对象服务层对所有扩展EntityObject基类的类进行管理,EntityObject是EF编程模型中所有实体类的基类。
②实体客户端的作用
EF API的另一个主要部分是实体客户端,它使用基本的ADO.NET数据提供程序来建立数据库连接,基于实体状态和LINQ查询生成SQL语句、将数据库数据映射到实体。
System.Data.EntityClient的命名空间中浏览实体客户端层的功能。包含了一些的类。

可以看出这些类(EntityCommand和EntityConnection)与ADO.NET数据提供程序中的类惊人地相似。
如果你需要更大程度地控制实体客户端基于Linq查询创建SQL语句的方式,你可以使用Entity SQL。它是直接作用于实体的与数据库无关SQL方言。
③*.edmx文件的作用
实体、真正的数据库以及映射层都会被划分为3个相关的部分:概念模型、逻辑模型和物理模型。
① 概念模型定义实体以及他们之间的关系(如果有的话)
②逻辑模型将实体和关系(通过外键约束)映射到表
③ 物理模型通过指定的存储细节(如表架构、表分割和索引)来表示特定的数据引擎的能力
在EF的世界里,这三层存存放在基于XML格式的文件里。
*.edmx 文件将生成3个独立的文件:用于概念模型数据的*.csdl、用于物理模型的*.ssdl、和用于映射层的*.msl.然后这三个基于XML的文件将以二进制资源的形式绑定到应用程序。
④ 书中使用的是4.0版本的,有点老了。。。。。 后面低版本更新为 DbContext和DbSet<T>了 代码演示的就DbContext个DbSet<T>了
ObjectContext和ObjectSet<T>类的作用
EF的最后一个难点是ObjectContext类,他是 System.Data.Object命名空间的一员。在生成*.emdx文件时,你将得到映射到数据库表的实体类和一个继承自ObjectContext类。该类通常用于对象服务于实体客户端之间的交互。
ObjectContect的常用成员






ObjectContent的派生类作为一个容器,管理哪些存储在ObjectSet<T>集合中的实体对象。例如:你在AutoLot数据库的Car表生成*.edmx文件,你会的得到一个AutoLotEntities类。
该类包含一个Cars属性(复数形式),它封装ObjectSet<Car>类型的数据成员。Orsers表创建一个EDM,AutoLotEntitesl类将定义另一个Orders属性,还封装ObjectSet<Order>类型的成员变量。
System.Data.ObjectSet<T>的一些常用成员



如果对LinQ To SQL有了解的话这个位置就很好了解了,基本一样。
创建和分析EDM



解决方案资源管理器里面

这个并不能让我们很好了解EDM,我们需要借助模型浏览器来帮助我们。
视图——》其他窗口——》实体数据模型浏览器
主要是模型,表等一些的介绍

可以修改属性

视图——》其他窗口——》实体数据模型映射详细信息

查看生成d*.edmx文件的数据
右键决解方案中的NewsEDM.edmx打开方式
、



查看生成的源代码


补充:
System.Data.Entity;
DbContext类的介绍


Entry这个方法一般可以用来改变实体的状态

DbEntityEntry 在命名空间 System.Data.Entity.Infrastructure

这个常用
返回的是 EntityState,是个枚举类型

一般这么用
context.Entry<News>(news的实例).State = EntityState.Deleted; //把你需要改变的类传到这个方法里面然后改变状态最后提交到数据库中就可以了
DbSet<T>类 context.News————》返回的就是 DbSet<News>




对概念模型进行编程
添加
//新建一个实例
using (NewsDBEntities context=new NewsDBEntities())
{
try
{
//添加一个新类到上下文
context.News.Add(new News() { CateID = , Contents = "测试类容", CreateDate = DateTime.Now, Title = "测试标题" });
context.SaveChanges(); //保存到数据库 如同执行了一条SQL Insert语句
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException.Message); }
}
数据库中多了一条信息

删除
//新建一个实例
using (NewsDBEntities context=new NewsDBEntities())
{
//找到你需要删除的信息 //①
News dd = context.News.First(x => x.NewsID == );
context.Entry<News>(dd).State = EntityState.Deleted; //改变状态 这里或者给强类型,看具体情况
//context.Entry(dd).State = EntityState.Deleted = context.News.Remove(newDel) 一个意思 //② 注意LinQ查询 返回单个
News newDel = context.News.Where(x => x.NewsID == ).First();
context.News.Remove(newDel); context.SaveChanges(); //提交数据库
}
更新
把需要更新的数据找出来,然后改变属性直接提交到数据库

查询就跟LinQ查询一回事。这里就只是演示了简单的增删改查。
总结:这里只是简单的了解了一下EF,到时候会继续学习更深层的。
ADO.NET 之 Entity Framework 基础的更多相关文章
- Entity Framework 基础
在忙碌中渡过了5,6,7 月份,现在些抽点时间对Entity Framework的使用做一些基础的回忆. Entity Framework 是什么? Entity Framework(EF)和我们所熟 ...
- Entity Framework基础01
学习了ADO.NET的相关知识,掌握了它对数据库表的基本操作,但是实际在开发项目应用中微软为我们开发ef这个ORM,使用它可以很方便的利用ADO.NET来操作DBMS,使得我们开发项目的着重点放在业务 ...
- Entity Framework 基础操作(1)
EF是微软推出的官方ORM框架,默认防注入可以配合LINQ一起使用,更方便开发人员. 首先通过SQLSERVER现在有的数据库类生产EF 右键->添加->新建项,选择AOD.NET实体数据 ...
- Entity Framework 基础知识走马观花
本文目录: 一.EF中的edmx文件探秘 二.EF中的代理模式探秘 三.EF中的延迟加载与即时加载 一.EF中的edmx文件 1.1 emdx文件本质:一个XML文件 (1)通过选择以XML方式打开e ...
- ADO.Net和Entity Framework的区别联系
它们有以下几点区别:1,ADO.Net是开发人员自己select.update等写sql语句,来实现对数据库的增删改查等操作:采用EF进行开发操作数据库的时候,只需要操作对象,这样做使开发更方便,此时 ...
- Entity Framework基础
http://blog.csdn.net/hurtlingsnail/article/details/53113934
- 将 Entity Framework、LINQ 和 Model-First 用于 Oracle 数据库
目的 本教程介绍如何使用 Entity Framework.语言集成查询 (LINQ),以及如何对 Oracle 数据库使用 Model-First 以生成数据定义语言 (DDL) 脚本. 所需时间 ...
- Entity Framework 教程——概述
Entity Framework 基础 本教材将手把手教你使用entity framework,我们将使用entity framework 6.0和visual studio 2012. 以下表格是e ...
- 8天掌握EF的Code First开发之Entity Framework介绍
返回<8天掌握EF的Code First开发>总目录 本篇目录 Entity Framework概要 什么是ORM Entity Framework简史 Entity Framework具 ...
随机推荐
- TreeMap和TreeSet简单应用
建一个实体类并实现Comparable接口重写compareTo方法 public class pojo implements Comparable<pojo> { private int ...
- 使用request与正则表达式爬取bangumi动画排行榜
import json import requests from requests.exceptions import RequestException import re import time d ...
- gcc 链接非标准名称库
一般库的标准名称是libxxx.so或者libxxx.a, 如果没有, 也可以搞个linkname出来, 那就可以直接用 "-lxxx" 来链接了, 但要是你想直接用realnam ...
- 详解 UWP (通用 Windows 平台) 中的两种 HttpClient API
UWP (通用 Windows 平台) 应用开发者在构建通过 HTTP 与 Web 服务或服务器断点交互的应用时,有多种 API 可以选择.要在一个托管 UWP 应用中实现 HTTP 客户端角色,最常 ...
- 在MyEclipse中使用javadoc导出API文档详解
本篇文档介绍如何在MyEclipse中导出javadoc(API)帮助文档,并且使用htmlhelp.exe和jd2chm.exe生成chm文档. 具体步骤如下: 打开MyEclipse,选中想要制作 ...
- VS2012 无法启动 IIS Express Web
用记事本打开项目的.csproj文件,定位到<WebProjectProperties>,把关于IIS的配置<DevelopmentServerPort>.<Develo ...
- BAT的java面试题
公司:国内三巨头其中的一家!面试时间约在1月份左右!基本上都是在晚上,所以不影响白天上班! 一面 一面偏架构方面 1.介绍一下自己,讲讲项目经历 2.你们项目中微服务是怎么划分的,划分粒度怎么确定? ...
- 前端给div加滚动条样式修改
<!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 集合之equals与hashCode方法
一 equals equals方法是Object级的,默认对比两个对象的内存地址,很多类都重写了该方法,对比对象的实际内容,一般对比同一类对象相同属性的属性值是否相同. 二 hashCode 1.哈 ...
- 使用angular帮你实现拖拽
拖拽有多种写法,在这里就看一看angular版的拖拽. <!DOCTYPE html> <html ng-app="myApp"> <head> ...