`

Entity Framework 学习总结之五:EntityClient

 
阅读更多

System.Data.EntityClient

EntityClient 提供程序使用存储特定的 ADO.NET 数据提供程序类和映射元数据与实体数据模型进行交互。 EntityClient 首先将对概念性实体执行的操作转换为对物理数据源执行的操作。 该提供程序将从物理数据源返回的结果集转换为概念性实体。

 

参考 MSDN


 

EntityConnection EntityCommand EntityDataReader 使用

为了避免无意使对象(如 System.Data.Common.CommandTrees ObjectContext )与其元数据失去同步, EntityConnection 必须锁定对象的元数据。锁定元数据后,不允许对连接字符串做出任何更改。

 

下面是锁定元数据的两种方案:

·    EntityConnection 实例通过默认的构造函数或接受连接字符串的 EntityConnection(String) 构造函数进行构造。 在任何一种情况下,连接字符串可能在打开连接前进行多次更改。 调用 [M:System.Data.EntityClient.EntityConnection.Open()] [M:System.Data.EntityClient.EntityConnection.GetMetadataWorkspace()] 锁定元数据。

·    EntityConnection 实例通过 EntityConnection(MetadataWorkspace, DbConnection) 构造函数进行构造,此构造函数接受 MetadataWorkspace DbConnection 在这种情况下,元数据在构造时锁定。 不允许对连接字符串做出任何更改。

 

加载元数据后, EntityConnection 验证概念性模型、存储模型和映射文件是否全部存在。

 

代码片断:

//string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["CSharpTestEntities"].Conne

//CSharpTestEntities edm = new CSharpTestEntities();

//string connStr = edm.Connection.ConnectionString;

string connStr = "name = CSharpTestEntities" ;   // 这三种方法都可以获取连接字符串

using (EntityConnection conn = new EntityConnection(connStr) )

{

    string sqlStr = "select value u from CSharpTestEntities.Users as u order by u.UserID desc" ;

 

    conn.Open();

    EntityCommand ecmd = new EntityCommand (sqlStr, conn);

    EntityDataReader edr = ecmd.ExecuteReader(CommandBehavior .SequentialAccess);

 

    if (edr.Read())

    {

        Console .WriteLine(edr["UserID" ]);   // 输出第一条

        Console .WriteLine(edr[1]); // 如果使用SequentialAccess则需按顺序访问列,否则将抛异常,edr[0]出错。

    }

    while (edr.Read())

    {

        Console .WriteLine(edr["UserID" ]);   // 接着从第二条开始

        Console .WriteLine(edr[1]);

    }

    Console .WriteLine(ecmd.ToTraceString());

}

注:EntityCommand继承自DbCommand,所以也包括ExecuteDbDataReader、 ExecuteNonQuery 、 ExecuteReader 、 ExecuteScalar等常用方法。

 

EntityParameter 使用

代码片断:

#region EntityParameter 参数化传递

//string sqlStr = "select value u from CSharpTestEntities.Users as u order by u.UserID desc skip @start limit @end";

//conn.Open();

//EntityCommand ecmd = new EntityCommand(sqlStr, conn);

 

#region 方法1

EntityParameter p1 = new EntityParameter ("start" , DbType .Int32);

p1.Value = 2;

EntityParameter p2 = new EntityParameter ("end" , DbType .Int32);

p2.Value = 8;

ecmd.Parameters.Add(p1);

ecmd.Parameters.Add(p2);

#endregion

 

#region 方法2

ecmd.Parameters.AddWithValue("start" , 0);

ecmd.Parameters.AddWithValue("end" , 8);

#endregion

 

EntityConnectionStringBuilder 使用

代码片断:

#region EntityConnectionStringBuilder 创建连接

EntityConnectionStringBuilder esb = new  EntityConnectionStringBuilder ();

esb.Provider = "System.Data.SqlClient" ;

esb.Metadata = @"res://*/CSharpTestEF.csdl|res://*/CSharpTestEF.ssdl|res://*/CSharpTestEF.msl" ;

esb.ProviderConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSharpTest;Integrated Security=True;MultipleActiveResultSets=True" ;

EntityConnection econn = new EntityConnection (esb.ConnectionString);

#endregion

 

补充:

#region CommandBehavior 枚举

/*

需要注意的是:CommandBehavior.SequentialAccess;这个地方。不同的枚举项,对查询会有不同影响。枚举如下:

Default 此查询可能返回多个结果集。在功能上等效于调用 ExecuteReader()。

SingleResult 查询返回一个结果集。

SchemaOnly 查询仅返回列信息。

KeyInfo 此查询返回列和主键信息。

SingleRow 查询应返回一行。

SequentialAccess 提供一种方法,以便 DataReader 处理包含带有大二进制值的列的行。

CloseConnection 在执行该命令时,如果关闭关联的 DataReader 对象,则关联的 Connection 对象也将关闭。

*/

#endregion

分享到:
评论

相关推荐

    Entity Framework 学习资料

    Entity Framework (EF) 是微软提供的一种对象关系映射(ORM)框架,用于.NET应用程序中处理数据库交互。它允许开发者使用面向对象的编程语言(如C#或VB.NET)来操作数据库,而无需直接编写SQL语句,从而简化了数据...

    .NET EntityFramework框架学习教程

    7. EntityClient:提供了与Entity Framework的数据提供者交互的API,用于连接和执行Entity SQL查询。 中级篇则深入探讨了更高级的功能: 1. 复杂类型支持:允许定义更复杂的实体属性,超越简单的值类型和引用类型。...

    Entity Framework 6以模型方式搭建Sqlite数据库开发环境

    Entity Framework 6以模型方式搭建Sqlite数据库环境 Visual studio 2010 .net40 完成CURD 未处理 System.Configuration.ConfigurationErrorsException ... Source=System.Data ... Source=EntityFramework Line=0

    entity framework 4

    EF4不直接支持批量操作,但可以通过扩展方法或第三方库如EntityFramework.Extended来实现,以提高性能。 ## 性能优化 1. **延迟加载**:默认情况下,EF4启用延迟加载,即只有在需要时才加载关联的数据。若不需要,...

    Entity Framework 详解

    ### Entity Framework 详解 #### 一、ADO.NET实体框架概述 **实体框架**(Entity Framework,简称EF)作为Microsoft .NET Framework的一部分,是用于访问数据库的高级对象关系映射(ORM)工具。新版本的ADO.NET...

    Entity_Framework_学习

    ### Entity Framework 学习知识点概览 #### 一、Entity Framework 概述 - **Entity Framework** 是微软推出的一种 **对象关系映射 (ORM)** 技术,它允许开发者使用对象编程模型来处理数据库,而无需关注底层的关系...

    Entity_Framework_ѧϰ.doc

    总结起来,这个文档系列全面地涵盖了Entity Framework的基础到高级使用,包括其核心概念、主要类的使用、查询语言、数据库操作、存储过程支持以及性能优化。对于想要掌握Entity Framework的开发者,这是一份非常宝贵...

    Entity Framework学习

    ### Entity Framework 学习知识点详解 #### 一、Entity Framework 基本概况 - **定义**: Entity Framework (简称 EF) 是 Microsoft 推出的一种对象关系映射 (ORM) 框架,允许开发者通过面向对象的方式来操作数据库...

    ADO.NET Entity Framework4.1

    ADO.NET Entity Framework 4.1 是微软开发的一个强大的对象关系映射(ORM)框架,它构建在 ADO.NET 之上,旨在简化数据库应用程序的开发。这个框架允许开发人员使用面向对象的编程方式来操作数据库,而无需直接编写...

    Entity_Framework_实体框架.doc

    Entity Framework(EF)是微软提供的一款强大的对象关系映射(ORM)框架,它允许开发者使用.NET语言(如C#或VB.NET)来操作数据库,而无需编写大量的SQL语句。这个文档系列涵盖了从初级到高级的EF学习路径,旨在帮助...

    Programming Entity Framework

    微软推出的ADO.NET Entity Framework(以下简称EF)作为一种强大的对象关系映射(ORM)工具,为.NET开发者提供了高效、灵活的数据访问解决方案。本文旨在对EF进行全面介绍,帮助读者掌握其核心概念与应用技巧。 ###...

    Entity_Framework_实体框架

    在学习Entity Framework时,我们可以分为初级、中级和高级三个阶段逐步深入: **初级篇:** 1. **EF 基本概况**:这部分介绍了Entity Framework的基本概念,包括它的设计理念、架构以及与数据库交互的核心组件。...

    entity framework

    ### Entity Framework概述 Entity Framework(简称EF)是微软开发的一款对象关系映射(ORM)框架,主要用于.NET平台上的应用程序与数据库进行交互。它提供了一种简单而强大的方式来处理数据库中的数据,允许开发者...

    System.Data.Entity

    Entity Framework的核心概念之一是实体数据模型(Entity Data Model, EDM)。EDM是一种抽象的数据表示,它将数据库模式转化为对象模型。在System.Data.Entity中,实体类(Entity Class)代表数据库表,属性...

    EntityFramework教程

    EntityClient 是一个提供连接管理、查询执行和数据读取的服务,它是Entity Framework与数据库通信的桥梁。使用EntityClient,开发者可以创建EntityConnection和EntityCommand,执行数据库查询。 8. 增加、更新、...

    EF教程.doc

    - **高级API**:Entity Framework支持EntityClient、ObjectContext以及LINQ等多种API,提供了丰富的数据访问功能。 - **新的开发模式**:随着版本的发展,EF引入了DbContext API以及Code First模式。DbContext API是...

    EntityF资料

    ### EntityFramework资料:从入门到精通 #### EF基本概况 **Entity Framework (EF)** 是一个在 .NET 平台上的对象关系映射 (ORM) 框架,它允许开发人员通过对概念性的应用程序模型进行编程来创建数据访问层的应用...

    VS2015 +EF6 连接MYSQL数据库生成实体

    2. 在搜索框中输入“EntityFramework”,找到“EntityFramework”并安装最新版本。 3. 对于MySQL支持,还需搜索“MySql.Data.Entity”,安装后即可启用EF6与MySQL的集成。 接下来,配置数据库连接: 1. 在App....

    简要的介绍EF(实体框架).doc

    实体框架(Entity Framework,简称EF)是微软推出的一款强大的对象关系映射(ORM)工具,它构建于ADO.NET之上,旨在解决将业务对象持久化到关系数据库的问题,从而避免程序员需要直接编写SQL语句。ORM技术的主要目标...

Global site tag (gtag.js) - Google Analytics