Fork me on GitHub

EF中几个重要的类:ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager

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

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

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

  •       到数据库的连接,以 EntityConnection 对象的形式封装。
  •       描述该模型的元数据,以 MetadataWorkspace 对象的形式封装。
  •       用于管理缓存中持久保存的对象的 ObjectStateManager 对象。

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

  •      AcceptAllChanges()

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

  •      AddObject(string,object)

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

  •      ApplyPropertyChanges(string,object)

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

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

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

  •      Attach(string,object)

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

  •      CreateEntityKey(string,object)

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

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

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

  •      DeleteObject(object)

删除指定的实体对象

  •      Detach(object)

移除指定的实体对象

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

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

  •      GetObjectByKey(System.Data.EntityKey key)

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

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

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

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

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

  •      SaveChanges(bool)

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

  •      SaveChanges()

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

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

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

以上各个方法的具体用法,将在后面介绍。

接着,再看看有用的类ObjectQuery。

ObjectQuery有个有用的方法ToTraceString(),这个方法用于追踪所执行的SQL语句,通过此方法我们可以获取所执行的SQL语句,以便我们查看、分析具体执行的SQL语句。(类似Nhibernate配置文件中的showsql节)

再了解一下ObjectStateEntry

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

  •      AcceptChanges

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

  •      Delete

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

  •      GetModifiedProperties

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

  •      SetModified

将状态设置为 Modified()。

  •      SetModifiedProperty

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

接着,再看看ObjectStateManager

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

获取给定EntityState的ObjectStateEntry集合。

获取给定的 EntityKey 对应的 ObjectStateEntry

posted @ 2013-07-26 11:17  迁梦余光  阅读(612)  评论(0编辑  收藏  举报