;">var customer in customers)

{

Console.WriteLine("{0},{1}",customer.CustomerID, customer.CompanyName);

}

 

ObjectStateEntry

维护对象或关系的 EntityStateEntityKey 值和原始值。还管理已修改属性的列表。每个实体类型关系实例都与一个 ObjectStateEntry 实例关联。 仅当对象在 ObjectStateManager 中时,才与 ObjectStateEntry 关联。当具有关系的对象分离时,由 ObjectStateEntry 维护的信息会减少为维护关系所需的信息。一个 ObjectStateEntry 不能有与同一 ObjectStateManager 中的另一个 ObjectStateEntry 相同的键。

 

无法修改持久性实体的键值。 处于更改、已修改和已删除状态的实体是持久性实体。

 

成员参考:http://msdn.microsoft.com/zh-cn/library/system.data.objects.objectstateentry_members.aspx

 

ObjectStateManager

ObjectStateManager 跟踪查询结果,并提供逻辑来合并多个重叠的查询结果。 它还在用户插入、删除或修改对象时执行内存中的更改跟踪,并提供用于更新的更改集。 更改处理器使用此变更集来持久保存修改。

 

此类通常由 ObjectContext 使用,不直接用于应用程序中。

 

成员参考:http://msdn.microsoft.com/zh-cn/library/system.data.objects.objectstatemanager_members.aspx

 

ObjectQuery

ObjectQuery 类支持对实体数据模型 (EDM) 执行 LINQ to Entities Entity SQL 查询。ObjectQuery 还实现了一组查询生成器方法,这些方法可用于按顺序构造等效于 Entity SQL 的查询命令。每个查询生成器方法返回 ObjectQuery 的一个新实例。使用这些方法可以构造查询,而查询的结果集基于前面 ObjectQuery 实例序列的操作。

 

常用方法和属性

Execute():使用指定的合并选项执行非类型化对象查询。

ToTraceString():返回要对数据源执行的命令。用于追踪所执行的SQL语句,通过此方法我们可以获取所执行的SQL语句,以便我们查看、分析具体执行的SQL语句。

CommandText:返回查询的命令文本。

 

Execute方法:返回ObjectResult

代码片断:

using (var edm = new NorthwindEntities())

{

string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";

 

ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);

ObjectResult<Customers> results = query.Execute(MergeOption.NoTracking);

foreach (Customers c in query)

{

Console.WriteLine(c.CustomerID);

}

}

 

MergeOption有四种值:

· AppendOnly 只追加新实体,不修改以前获取的现有实体。这是默认行为。

· OverwriteChanges ObjectStateEntry 中的当前值替换为存储区中的值。这将使用服务器上的数据重写在本地所做的更改。

· PreserveChanges 将替换原始值,而不修改当前值。这对于在发生开放式并发异常之后强制成功保存本地值非常有用。

· NoTracking 将不修改 ObjectStateManager,不会获取与其他对象相关联的关系,可以改善性能。

 

GetResultType方法:返回查询结果的类型信息。

 

ToTraceString方法:获取当前执行的SQL语句。

Console.WriteLine(query.ToTraceString());

 

Where方法

代码片断:

string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";

ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);

 

//使用ObjectParameter的写法

query = query.Wh

返回
【上篇】
【下篇】

作者:

抱歉!评论已关闭.