zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    UVa 10055
    UVa 401
    c++中文件应用的一点小变化
    poj2136
    UVa 494
    一台电脑接两个显示器,双屏显示介绍zz
    学习jquery合集
    解决Windows下MinGW显示乱码zz
    QWS_MOUSE_PROTO该如何写
    Qt/e中鼠标设备分析
  • 原文地址:https://www.cnblogs.com/tianboblog/p/3216709.html
Copyright © 2011-2022 走看看