zoukankan      html  css  js  c++  java
  • Entity Framework 学习初级篇2ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍

    本节,简单的介绍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

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

  • 相关阅读:
    sql导数据 自增长
    只能在执行 Render() 的过程中调用 RegisterForEventValidation
    JS获取DropDownList的值
    解决IE6、IE7、IE8、Firefox兼容的两种方案
    C#日期格式化
    页面弹出窗口刷新父页面方式小结
    Dictionary Queue Stack SortedList ArrayList
    asp.net水晶报表推模式加载报表数据代码段
    JS隐藏工具栏菜单栏
    解决在SQL Server 2000的存储过程不能调试
  • 原文地址:https://www.cnblogs.com/xwj517537691/p/3126636.html
Copyright © 2011-2022 走看看