Entity Framework学习初级篇3--LINQ TO Entities

LINQ 技术(即LINQ to Entities)使开发人员能够通过使用LINQ 表达式和LINQ 标准查询运算符,直接从开发环境中针对实体框架对象上下文创建灵活的强类型查询。LINQ to Entities查询使用对象服务基础结构。ObjectContext 类是作为CLR 对象与实体数据模型进行交互的主要类。开发人员通过ObjectContext构造泛型ObjectQuery实例。ObjectQuery 泛型类表示一个查询,此查询返回一个由类型化实体组成的实例或集合。返回的实体对象可供更新并位于对象上下文中。以下是创建和执行LINQ to Entities查询的过程:

1.从ObjectContext构造ObjectQuery实例。

2.通过使用ObjectQuery实例在C#或Visual Basic中编写 LINQ to Entities查询。

3.将LINQ 标准查询运算符和表达式将转换为命令目录树。

4.对数据源执行命令目录树表示形式的查询。执行过程中在数据源上引发的任何异常都将直接向上传递到客户端。

5.将查询结果返回到客户端。

一、Linq To Entities简单查询

下面将介绍简单的Linq To Entities查询,相关的查询语法可以使用基于表达式或基于方法的语法。本节使用的TestDriver.Net配合Nunit2.4进行测试。

1,投影

代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Data.Objects;

using NUnit.Framework;

namespace NorthWindModel 

{

[TestFixture]

public class TestEFModel 

{

[Test]

public void Select()

{

using (var edm = new NorthwindEntities())

{

//基于表达式的查询语法

ObjectQuery<Customers> customers = edm.Customers;

IQueryable<Customers> cust1 = from c in customers

select c;

Assert.Greater(cust1.Count(), 0);

//使用ObjectQuery类的ToTraceString()方法显示查询SQL语句

Console.WriteLine(customers.ToTraceString());

}

}

}

}

时间: 2024-11-01 15:45:49

Entity Framework学习初级篇3--LINQ TO Entities的相关文章

Entity Framework学习初级篇2

Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍 本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data.Entity.dll下的System.Data.Objects命名空间下.在后续的章节中,我们经常会用到它们的某些方

Entity Framework学习初级篇1--EF基本概况

最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支持.因此,为以后做技术准备可以学习研究以下.但是,我个人觉得就目前来说,在实际项目慎用此框架. 下面简单的介绍以下这个EF. 在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品.用于支持开发人员通过对概念性应用程序模型

Entity Framework学习初级篇5--ObjectQuery查询及方法

ObjectQuery 类支持对实体数据模型(EDM)执行LINQ to Entities和Entity SQl查询.ObjectQuery还实现了一组查询生成器方法,这些方法可用于按顺序构造等效于Entity SQl的查询命令.下面是ObjectQuery的查询生成器方法以及等效的Entity SQl语句: Distinct,Except,GroupBy,Intersect,OfType,OrderBy,Select,SelectValue,Skip,Top,Union,UnionAll,Wh

Entity Framework学习初级篇7--基本操作:增加、更新、删除、事务

本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作相关的内容在之前的1至6节基本介绍完毕. l 增加: 方法1:使用AddToXXX(xxx)方法:实例代码如下: using (var edm = new NorthwindEntities()) { Customers c = new Customers { CustomerID = "c#", City = "成都市", Address = "中国四川省", CompanyNa

Entity Framework学习初级篇6--EntityClient

System.Data.EntityClient 命名空间是实体框架的.NET Framework数据提供程序.EntityClient 提供程序使用存储特定的ADO.NET数据提供程序类和映射元数据与实体数据模型进行交互.EntityClient首先将对概念性实体执行的操作转换为对物理数据源执行的操作.然后再将物理数据源返回的结果集转换为概念性实体. EntityClient下的类有以下几个: l EntityConnection l EntityCommand l EntityConnect

Entity Framework学习初级篇4--Entity SQL

Entity SQl是ADO.NET实体框架提供的SQl类语言,用于支持实体数据模型(EDM).Entity SQl可用于对象查询和使用EntityClient提供程序执行的查询. l 关键字 Value关键字 ESQl提供了SELECT VALUE子句以跳过隐式行构造.SELECT VALUE子句中只能指定一项.在使用这样的子句时,将不会对SELECT子句中的项构造行包装器,并且可生成所要形状的集合,例如:SELECT VALUE it FROM NorthwindEntities.Custo

Entity Framework学习中级篇1—EF支持复杂类型的实现

本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的简单操作. 通常,复杂类型是指那些由几个简单的类型组合而成的类型.比如:一张Customer表,其中有FristName和LastName字段,那么对应的Customer实体类将会有FristName和LastName这两个属性.当我们想把FirstName和LastName合成一个名为CustomerName属性时,此时,如果要在EF中实现这个目的,那么我们就需要用到复杂类型. 目前,由于EF不能显示支持复杂类型,所以我们

Entity Framework学习中级篇3—存储过程(中)

目前,EF对存储过程的支持并不完善.存在以下问题: l EF不支持存储过程返回多表联合查询的结果集. l EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况. l 虽然可以正常导入返回标量值的存储过程,但是却没有为我们自动生成相应的实体.cs代码,我们还是无法在代码中直接调用或使用标量存储过程 l EF不能直接支持存储过程中Output类型的参数. l 其他一些问题. 本节,我们将学习如何手动添加/修改存储过程,如何使EF能够支持Output类型的参数. l 添

Entity Framework学习高级篇2—改善EF代码的方法(下)

本节,我们将介绍一些改善EF代码的方法,包括编译查询.存储模型视图以及冲突处理等内容. l CompiledQuery 提供对查询的编译和缓存以供重新使用.当相同的查询需要执行很多遍的时候,那么我们可以使用ComplieQuery将查询的语句进行编译以便下次使用,这样可以免去对同一语句的多次处理,从而改善性能. 示例代码如下: [Test] public void ComplieTest() { using (var db = new NorthwindEntities1()) { //对查询进