Entity Framework 学习初级篇2--ObjectContext类的介绍
转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685014.html
本节,简单的介绍EF中的ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager这个几个比较重要的类,它们都位于System.Data.Entity.dll下的System.Data.Objects命名空间下。在后续的章节中,我们经常会用到它们的某些方法,以便完成我们的某些操作或目的。本节,简单的说明一下以后我们可能会用到的各个类的方法,以方便我们后续的学习。
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。
ObjectQuery有个有用的方法ToTraceString(),这个方法用于追踪所执行的SQL语句,通过此方法我们可以获取所执行的SQL语句,以便我们查看、分析具体执行的SQL语句。(类似Nhibernate配置文件中的showsql节)
再了解一下ObjectStateEntry。
ObjectStateEntry维护实体实例或关系实例的状态(已添加、已删除、已分离、已修改或未更改)、键值和原始值。还管理已修改属性的列表。其包含一下方法:
l AcceptChanges
接受当前值作为原始值,并将实体标记为Unchanged()。
l Delete
将实体标记为Deleted()。如果实体处于Added()()()状态,它将为Detached()。
l GetModifiedProperties
返回标记为Modified()的属性名称。
l SetModified
将状态设置为Modified()。
l SetModifiedProperty
将指定的属性标记为Modified()。
接着,再看看ObjectStateManager。
ObjectStateManager用于维护对象映射、对象状态/标识管理以及实体实例或关系实例的持久性。
获取给定EntityState的ObjectStateEntry集合。
获取给定的EntityKey对应的ObjectStateEntry
现在,几个重要的类简单介绍完毕。后面,我们将具体学习它们的使用。
Entity Framework 学习初级篇2--ObjectContext类的介绍的更多相关文章
- Entity Framework学习初级篇2
Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍 本节,简单的介绍E ...
- Entity Framework 学习初级篇2--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍
本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...
- Entity Framework 学习初级篇--基本操作:增加、更新、删除、事务(转)
摘自:http://www.cnblogs.com/xray2005/archive/2009/05/17/1458568.html 本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作 ...
- Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务
本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作相关的内容在之前的1至6节基本介绍完毕. l 增加: 方法1:使用AddToXXX(xxx)方法:实例代码如下: ...
- Entity Framework 学习初级篇3-- LINQ TO Entities
LINQ 技术(即 LINQ to Entities)使开发人员能够通过使用 LINQ 表达式和 LINQ 标准查询运算符,直接从开发环境中针对 实体框架对象上下文创建灵活的强类型查询.LINQ to ...
- Entity Framework学习初级篇3--LINQ TO Entities
LINQ 技术(即LINQ to Entities)使开发人员能够通过使用LINQ 表达式和LINQ 标准查询运算符,直接从开发环境中针对实体框架对象上下文创建灵活的强类型查询.LINQ to Ent ...
- Entity Framework 学习初级篇1--EF基本概况
转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685011.html 最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不 ...
- Entity Framework学习初级篇1--EF基本概况《转》
最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支 ...
- Entity Framework 学习初级篇--EntityClient(转)
摘自:http://www.cnblogs.com/xray2005/archive/2009/05/13/1456374.html System.Data.EntityClient 命名空间是 实体 ...
随机推荐
- OC - 6.block与protocol
一.block 1> 基本使用 相当于用来存放代码的代码块 效率高 若没有形参可以省略小括号 2> block与函数的相同点 可以保存代码 可以有返回值 可以有形参 调用方式一样 3> ...
- let和const====均参考阮大神的es6入门
// 解构复制// let [foo,[[bar],baz]] = [1,[[2],3]];// console.log(foo);//1// console.log(bar);//2// conso ...
- jQuery表格操作
$("#tableid tr:gt(0)").each(function(i){ $(this).children("td").each(function(j) ...
- Linux系统的启动流程以及做个小小的Linux
内核的作用 进程管理:进程间切换 内存管理:内存空间分割为内核空间和用户空间 IO管理:对底层硬件的使用必须由内来实现,不能由用户空间进程来实现 文件系统管理 ...
- ubuntu 安装phpmyadmin
参考文章: http://www.111cn.net/database/mysql/43957.htm access错误的解决方法 1 首先下载 去官网下载phpmyadmin 2 然后直接 ...
- centos 基本操作(输入法安装,adls宽带连接,查找文件,模拟终端)
centos 基本操作之输入法安装输入法启动终端,切换到超级管理员yum install "@Chinese Support"安装成功后,退出System->Preferen ...
- JDK重要包和Java学习方法论
以下内容摘自:万能的林萧说:一篇文章教会你,如何做到简历中要求的“要有扎实的Java基础” 第一级别:精读源码 该级别包含的包如下: java.io java.lang java.util 第二 ...
- 国内各大互联网公司UED(用户体验设计)团队博客介绍
UED是什么UED = user experience design,用户体验设计.UED的通常理解,就是“我们做的一切都是为了呈现在您眼前的页面”.UED团队包括:交互设计师(Interactio ...
- 新浪微博登录接口(PHP版)
CI框架下 新浪微博登录接口完整版说明:本贴只适合CI框架.功能实现:登录接口跳转链接成功,获取用户信息(包括最重要的u_id)成功,将用户与本地平台连接起来,用户登录成功后信息的存储,本地数据库第三 ...
- 使用Yii框架中遇到的三个问题
以下由我们在信易网络公司开发项目的时候终结出的一些经验 使用Yii框架中遇到的三个问题 1.main.php文件中欲引入全局变量的问题 还原一下此问题:在Yii框架中,main.php一般会作为整个应 ...