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

    转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685014.html

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

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

  • 相关阅读:
    初学Java Web(2)——搭建Java Web开发环境 (转)
    我们为什么要配置CATALINA_HOME环境变量(转)
    【510】Attention-based Model
    【509】NLP实战系列(九)—— 结合 CNN 和 RNN 来处理长序列
    【510】NLP实战系列(八)—— 使用一维CNN处理 IMDB 情感分析
    【510】NLP实战系列(七)—— 进阶版(dropout/stacking/BiLSTM)
    【509】NLP实战系列(六)—— 通过 LSTM 来做分类
    apt-mark
    ROS程序开机自启动
    个人开发者可以申请微信支付了
  • 原文地址:https://www.cnblogs.com/cugwx/p/3551933.html
Copyright © 2011-2022 走看看