Entity Framework 应用程序有以下优点:

1 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。

2 应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。

3 可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。

4 开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。

5 多个概念性模型可以映射到同一个存储架构。

6 语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。

Entity Framework中的实体数据模型(EDM)由三部分构成:

1概念架构定义语言文件 (.csdl) -- 定义概念模型。

2存储架构定义语言文件 (.ssdl) -- 定义存储模型(又称逻辑模型)。

3映射规范语言文件 (.msl) -- 定义存储模型与概念模型之间的映射。

Entity Framework提供了一下方法用于查询EDM并返回对象

1LINQ to Entities -- 提供语言集成查询 (LINQ) 支持用于查询在概念模型中定义的实体类型。

2Entity SQL -- 与存储无关的 SQL 方言,直接使用概念模型中的实体并支持诸如继承和关系等 EDM 功能。

3查询生成器方法 --可以使用 LINQ 风格的查询方法构造 Entity SQL 查询。

Entity Framework主要有四个类:ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager

ObjectContext封装 .NET Framework 和数据库之间的连接。此类用作“创建”、“读取”、“更新”和“删除”操作的网关。

ObjectContext 类为主类,用于与作为对象(这些对象为 EDM 中定义的实体类型的实例)的数据进行交互。

ObjectContext 类的实例封装以下内容:

l           到数据库的连接,以 EntityConnection 对象的形式封装。

l           描述该模型的元数据,以 MetadataWorkspace 对象的形式封装。

l           用于管理缓存中持久保存的对象的 ObjectStateManager 对象。

ObjectContext类的成员方法以说明如下所示:

l           AcceptAllChanges()

接受所有对该实体对象的更改

l           AddObject(string,object)

将实体对象添加到制定的实体容器中

l           ApplyPropertyChanges(string,object)

将以指派的实体对象属性的更改应用到容器中对应的原对象。

l           Attach(System.Data.Objects.DataClasses.IEntityWithKey entity)

将带主键的实体对象附加到默认的容器中

l           Attach(string,object)

将实体对象附加到指定的实体容器中

l           CreateEntityKey(string,object)

给指定的实体对象创建实体主键或如果已存在实体主键,则直接返回该实体的主键

l           CreateQuery<T>(string,params ObjectParameter[])

从给定的查询字符串创建ObjectQuery对象。

l           DeleteObject(object)

删除指定的实体对象

l           Detach(object)

移除指定的实体对象

l           ExecuteFunction<TElement>(string,params ObjectParameter[])

对默认容器执行给定的函数。

l           GetObjectByKey(System.Data.EntityKey key)

通过主键KEY从 ObjectStateManager 中检索对象(如果存在);否则从存储区中检索。

l           Refresh(System.Data.Objects.RefreshMode refreshMode, object entity)

按指定持久更新模式,使用指定实体的存储区数据更新ObjectStateManager。。

l           Refresh(System.Data.Objects.RefreshMode refreshMode, System.Collections.IEnumerable collection)

按指定持久处理模式,使用指定实体集的存储区数据更新ObjectStateManager。

l           SaveChanges(bool)

将所有更新持久保存到存储区中。参数是客户端事务支持所需的参数。参数为true则在更新后自动将更改应用到ObjectStateManager中的实体。如果为false,则在更新后还需要调用AcceptAllChanges()以便更新ObjectStateManager中的实体。

l           SaveChanges()

将所有更新持久保存到存储区中

l           TryGetObjectByKey(System.Data.EntityKey,out object)

尝试从指定实体主键返回该实体

ObjectQuery有个有用的方法ToTraceString(),这个方法用于追踪所执行的SQL语句,通过此方法我们可以获取所执行的SQL语句,以便我们查看、分析具体执行的SQL语句。

ObjectStateEntry维护实体实例或关系实例的状态(已添加、已删除、已分离、已修改或未更改)、键值和原始值。还管理已修改属性的列表。其包含一下方法:

l           AcceptChanges

接受当前值作为原始值,并将实体标记为 Unchanged()。

l            Delete

将实体标记为 Deleted()。如果实体处于 Added()()() 状态,它将为 Detached()。

l           GetModifiedProperties

返回标记为 Modified()的属性名称。

l            SetModified

将状态设置为 Modified()。

l            SetModifiedProperty

将指定的属性标记为 Modified()。

ObjectStateManager用于维护对象映射、对象状态/标识管理以及实体实例或关系实例的持久性。

l           GetObjectStateEntries

获取给定EntityState的ObjectStateEntry集合。

l           GetObjectStateEntry

获取给定的 EntityKey 对应的 ObjectStateEntry

EntityFramework小知识的更多相关文章

  1. 蓝牙Bluetooth技术小知识

    蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...

  2. HTML+CSS中的一些小知识

    今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...

  3. iOS APP开发的小知识(分享)

          亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...

  4. Unix系统小知识(转)

    Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...

  5. salesforce 零基础开发入门学习(十)IDE便捷小知识

    在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...

  6. Jquery:小知识;

    Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器   上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...

  7. HTML小知识---Label

    今天知道了一个html小知识: <input type="checkbox" id="chkVersion" />                 ...

  8. Unicode和汉字编码小知识

    Unicode和汉字编码小知识 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的 ...

  9. Java异常的一个小知识

    有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...

随机推荐

  1. mysql中增加某一时间段内的时间数据(包含:时间、年、月、日、第几周、季度)

    创建表dim_date: create table `dim_date` ( `year` int (20), `month` int (20), `day` int (20), `week` int ...

  2. vim 退出保留显示的内容

    /*************************************************************************** * vim 退出保留显示的内容 * 声明: * ...

  3. 分布式存储Memcache替代Session方案

    PHP自带的Session实际是在服务器中为每个客户建立独立的文件存放各自的信息. 在不做处理的情况下,很容易被客户端伪造.并且由于采用文件形式,所以存在着IO 读写的瓶颈.一般当用户在线达到1000 ...

  4. Java [leetcode 35]Search Insert Position

    题目描述: Given a sorted array and a target value, return the index if the target is found. If not, retu ...

  5. 正则化(Regularization)

    正则化(Regularization)是机器学习中抑制过拟合问题的常用算法,常用的正则化方法是在损失函数(Cost Function)中添加一个系数的\(l1 - norm\)或\(l2 - norm ...

  6. 【转】[MTK软件原创] [SELinux] 如何设置确认selinux模式

    原文网址:http://bbs.16rd.com/thread-54766-1-1.html [Description] linux SELinux 分成Enforce 以及 Permissive 两 ...

  7. java jvm学习笔记六(实现写自己的安全管理器)

    安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用AccessController的checkPerssiom方法,访问控 ...

  8. 消息系统Kafka介绍

    1.  概述 Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数 据.活跃的流式数据在web网站应用中非常常见,这 些数据包括网站的pv.用户访问了什么内容,搜 ...

  9. C# Multilanguage messagebox z

    Either way, can't you just call MessageBox.Show(rm.GetString("messageboxData", ci)) class ...

  10. STM32学习笔记——FSMC 驱动大容量NAND FLASH [复制链接]

    本文原创于观海听涛,原作者版权所有,转载请注明出处. 近几天开发项目需要用到STM32驱动NAND FLASH,但由于开发板例程以及固件库是用于小页(512B),我要用到的FLASH为1G bit的大 ...