本节,简单的介绍EF中的ObjectContext、ObjectQuery、ObjectStateEntryObjectStateManager这个几个比较重要的类,它们都位于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用于维护对象映射、对象状态/标识管理以及实体实例或关系实例的持久性。

l           GetObjectStateEntries

获取给定EntityState的ObjectStateEntry集合。

l           GetObjectStateEntry

获取给定的 EntityKey 对应的 ObjectStateEntry

现在,几个重要的类简单介绍完毕。后面,我们将具体学习它们的使用。

Entity Framework 学习初级篇2--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍的更多相关文章

  1. Entity Framework学习初级篇2

    Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍 本节,简单的介绍E ...

  2. Entity Framework 学习初级篇--基本操作:增加、更新、删除、事务(转)

    摘自:http://www.cnblogs.com/xray2005/archive/2009/05/17/1458568.html 本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作 ...

  3. Entity Framework 学习初级篇2--ObjectContext类的介绍

    转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685014.html 本节,简单的介绍EF中的ObjectContext.ObjectQuer ...

  4. Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务

    本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作相关的内容在之前的1至6节基本介绍完毕. l           增加: 方法1:使用AddToXXX(xxx)方法:实例代码如下: ...

  5. Entity Framework 学习初级篇1--EF基本概况

    转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685011.html 最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不 ...

  6. Entity Framework学习初级篇1--EF基本概况《转》

    最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支 ...

  7. Entity Framework 学习初级篇4--Entity SQL

    Entity SQL 是 ADO.NET 实体框架 提供的 SQL 类语言,用于支持 实体数据模型 (EDM).Entity SQL 可用于对象查询和使用 EntityClient 提供程序执行的查询 ...

  8. Entity Framework 学习初级篇3-- LINQ TO Entities

    LINQ 技术(即 LINQ to Entities)使开发人员能够通过使用 LINQ 表达式和 LINQ 标准查询运算符,直接从开发环境中针对 实体框架对象上下文创建灵活的强类型查询.LINQ to ...

  9. Entity Framework学习初级篇3--LINQ TO Entities

    LINQ 技术(即LINQ to Entities)使开发人员能够通过使用LINQ 表达式和LINQ 标准查询运算符,直接从开发环境中针对实体框架对象上下文创建灵活的强类型查询.LINQ to Ent ...

随机推荐

  1. php 分页类(2)

    <?phpinclude("connection.php");$perNumber=10; //每页显示的记录数$page=$_GET['page']; //获得当前的页面值 ...

  2. 一些常用数据库操作在mysql及sql server中实现方式的差异

    因为本文强调的是不同点,所以先讲述不同点,再讲相同点. 一.不同点 1.创建表时主键id的自增实现方式不一样 mysql数据库的实现方式是auto_increment,示例如下 CREATE TABL ...

  3. CSS3的box-sizing属性

    盒模型的宽度,在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内 W3C标准中的盒模型宽度为内容宽度,不包括内边距paddin ...

  4. 【第一篇】学习 android 事件总线androidEventbus之sticky事件的传递

    最近再看eventbus相关代码,首先从使用开始,后期再从源码角度分析eventbus.使用Demo后期公布到github上去. 使用的框架地址:https://github.com/bboyfeiy ...

  5. android之服务service

    service的概念: 官方定义:在后台长时间的操作,没有用户界面,不与用户进行交互,在默认的情况下,service运行在应用程序进程的主线程中,如果需要在Service中处理一些网络连接等耗时操作, ...

  6. HDU 5806 NanoApe Loves Sequence Ⅱ

    将大于等于m的数改为1,其余的改为0.问题转变成了有多少个区间的区间和>=k.可以枚举起点,二分第一个终点 或者尺取法. #pragma comment(linker, "/STACK ...

  7. vmware 安装提示the msi failed

    原因是卸载不干净,使用批处理bat文件卸载,然后重启即可. VMware workstation 10.0序列号:MA491-6NL5Q-AZAM0-ZH0N2-AAJ5A 百度云文件:http:// ...

  8. c语言-经验之谈

    如果你是一个大牛,那就直接忽略这里. 如果你是一个新手,请继续向下看. 在自学计算机的路上真的很悲惨,如果你是在学校里面学习还算比较幸运. 针对编程来说,在学校里面学习的只是学会了语言,而很少有人学会 ...

  9. WCF配置文件的问题(位置)

    引用过了远程的WCF服务,会自动生成配置文件,但是这个配置的位置,尽量放在applicationSettings的前面 刚才测试了,貌似放后面,会报错(执行的时候,这个问题,需要继续试验) (待验证) ...

  10. LeetCode OJ 98. Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...