- 浏览: 1005347 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
介绍
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) 将查询结果返回到客户端。
查询使用
相关的查询语法可以使用基于表达式或基于方法的语法。
1 、投影
代码片断:
using (var edm = new NorthwindEntities ())
{
ObjectQuery <Orders > orders = edm.Orders;
IQueryable <Orders > result = from order in orders
select order;
foreach (Orders o in result)
{
Console .WriteLine("{0},{1}" , o.OrderID, o.OrderDate);
}
Console .WriteLine(orders.ToTraceString());
}
2 、条件限制
代码片断:
DateTime orderDate =new DateTime (1996,7,9);
// 第一种方法在表达式中进行Where
//ObjectQuery<Orders> orders = edm.Orders;
//IQueryable<Orders> result = from order in orders
//where order.OrderDate <= orderDate
//select order ;
// 可以直接在edm.Orders对象上使用Where扩展方法
var orders = edm.Orders.Where(order => order.OrderDate <= orderDate);
IQueryable <Orders > result = from order in orders
select order;
foreach (Orders o in result)
{
Console .WriteLine("{0},{1}" , o.OrderID, o.OrderDate);
}
//Console.WriteLine(orders.ToTraceString());
// 对比生成的SQL语句,此种在本质上筛选,而前种方法是在内存中筛选。
Console .WriteLine(((ObjectQuery )orders).ToTraceString());
结果:
3 、排序和分页
在使用 Skip 和 Take 方法实现分页时,必须先对数据进行排序,否则将会抛异常。
代码片断:
DateTime orderDate = new DateTime (1996, 7, 9);
// 第一种方法在表达式中进行分页
ObjectQuery <Orders > orders = edm.Orders;
IQueryable <Orders > result = (from order in orders
where order.OrderDate > orderDate
orderby order.OrderID
select order).Skip(0).Take(2);
// 可以直接在edm.Orders对象上使用Where、OrderBy、Skip、Take扩展方法。
//var orders = edm.Orders.Where(order => order.OrderDate <= orderDate).OrderBy(order => order.OrderID).Skip(0).Take(2);
// 可以直接foreach (Orders o in orders)
foreach (Orders o in result)
{
Console .WriteLine("{0},{1}" , o.OrderID, o.OrderDate);
}
Console .WriteLine(orders.ToTraceString());
// 对比生成的SQL语句,此种在本质上筛选,而前种方法是在内存中筛选。
//Console.WriteLine(((ObjectQuery)orders).ToTraceString());
第一种方法输出结果:
10253,1996/7/10 0:00:00
10254,1996/7/11 0:00:00
SELECT
[Extent1].[OrderID] AS [OrderID],
[Extent1].[CustomerID] AS [CustomerID],
[Extent1].[EmployeeID] AS [EmployeeID],
[Extent1].[OrderDate] AS [OrderDate],
[Extent1].[RequiredDate] AS [RequiredDate],
[Extent1].[ShippedDate] AS [ShippedDate],
[Extent1].[ShipVia] AS [ShipVia],
[Extent1].[Freight] AS [Freight],
[Extent1].[ShipName] AS [ShipName],
[Extent1].[ShipAddress] AS [ShipAddress],
[Extent1].[ShipCity] AS [ShipCity],
[Extent1].[ShipRegion] AS [ShipRegion],
[Extent1].[ShipPostalCode] AS [ShipPostalCode],
[Extent1].[ShipCountry] AS [ShipCountry]
FROM [dbo].[Orders] AS [Extent1]
第二种方法输出结果:
10248,1996/7/4 0:00:00
10249,1996/7/5 0:00:00
SELECT TOP (2)
[Project1].[OrderID] AS [OrderID],
[Project1].[CustomerID] AS [CustomerID],
[Project1].[EmployeeID] AS [EmployeeID],
[Project1].[OrderDate] AS [OrderDate],
[Project1].[RequiredDate] AS [RequiredDate],
[Project1].[ShippedDate] AS [ShippedDate],
[Project1].[ShipVia] AS [ShipVia],
[Project1].[Freight] AS [Freight],
[Project1].[ShipName] AS [ShipName],
[Project1].[ShipAddress] AS [ShipAddress],
[Project1].[ShipCity] AS [ShipCity],
[Project1].[ShipRegion] AS [ShipRegion],
[Project1].[ShipPostalCode] AS [ShipPostalCode],
[Project1].[ShipCountry] AS [ShipCountry]
FROM ( SELECT [Project1].[OrderID] AS [OrderID], [Project1].[CustomerID] AS [Cus
tomerID], [Project1].[EmployeeID] AS [EmployeeID], [Project1].[OrderDate] AS [Or
derDate], [Project1].[RequiredDate] AS [RequiredDate], [Project1].[ShippedDate]
AS [ShippedDate], [Project1].[ShipVia] AS [ShipVia], [Project1].[Freight] AS [Fr
eight], [Project1].[ShipName] AS [ShipName], [Project1].[ShipAddress] AS [ShipAd
dress], [Project1].[ShipCity] AS [ShipCity], [Project1].[ShipRegion] AS [ShipReg
ion], [Project1].[ShipPostalCode] AS [ShipPostalCode], [Project1].[ShipCountry]
AS [ShipCountry], row_number() OVER (ORDER BY [Project1].[OrderID] ASC) AS [row_
number]
FROM ( SELECT
[Extent1].[OrderID] AS [OrderID],
[Extent1].[CustomerID] AS [CustomerID],
[Extent1].[EmployeeID] AS [EmployeeID],
[Extent1].[OrderDate] AS [OrderDate],
[Extent1].[RequiredDate] AS [RequiredDate],
[Extent1].[ShippedDate] AS [ShippedDate],
[Extent1].[ShipVia] AS [ShipVia],
[Extent1].[Freight] AS [Freight],
[Extent1].[ShipName] AS [ShipName],
[Extent1].[ShipAddress] AS [ShipAddress],
[Extent1].[ShipCity] AS [ShipCity],
[Extent1].[ShipRegion] AS [ShipRegion],
[Extent1].[ShipPostalCode] AS [ShipPostalCode],
[Extent1].[ShipCountry] AS [ShipCountry]
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[OrderDate] <= @p__linq__0
) AS [Project1]
) AS [Project1]
WHERE [Project1].[row_number] > 0
ORDER BY [Project1].[OrderID] ASC
4 、聚合
可使用的聚合运算符有 Average 、 Count 、 Max 、 Min 和 Sum 。
代码片断:
var maxuprice = edm.Products.Max(p => p.UnitPrice);
Console .WriteLine(maxuprice.Value);
5 、连接
可以的连接有 Join 和 GroupJoin 方法。 GroupJoin 组联接等效于左外部联接,它返回第一个(左侧)数据源的每个元素(即使其他数据源中没有关联元素)。
代码片断:
var query = from d in edm.Order_Details
join order in edm.Orders
on d.OrderID equals order.OrderID
select new
{
OrderId = order.OrderID,
ProductId = d.ProductID,
UnitPrice = d.UnitPrice
};
foreach (var q in query)
{
Console .WriteLine("{0},{1},{2}" , q.OrderId, q.ProductId, q.UnitPrice);
}
详细的使用方法可以参考 Linq to SQL 。
有关 LINQ 可以了解: http://msdn.microsoft.com/zh-cn/magazine/cc337893.aspx
本文严重参考: http://www.cnblogs.com/xray2005/archive/2009/05/09/1453036.html
发表评论
-
C# LINQ to SQL
2017-07-28 12:48 6381、Concat(连接不同的集合不会自动过滤相同项。会延迟计 ... -
基于 EntityFramework 的数据库主从读写分离服务插件
2017-03-08 15:06 11361. 版本信息和源码 1.1 版本信息 v1.01 be ... -
EF6(CodeFirst)+MySql开发
2017-01-06 14:08 1470如题,本文是使用EntityFramework6框架的感悟( ... -
<Entity Framework> - 直接执行数据库命令
2016-08-10 15:00 1511使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库 ... -
EntityFramework执行SQL语句
2016-08-10 14:58 986在EF中执行Sql语句。 Insert Code: ... -
EntityFramework 执行SQL语句进行参数化查询代码示例
2016-08-10 14:59 1890在我们用EntityFramework时,一般情况下我们是要 ... -
Entity Framework 学习中级篇—使EF支持Oracle9i
2011-07-05 16:57 2960从Code MSDN上下载下来的EFOracleProvide ... -
Entity Framework 学习中级篇—EF支持复杂类型的实现
2011-07-05 16:56 12659http://www.cnblogs.com/xray20 ... -
Entity Framework 学习初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateMa
2011-07-05 16:55 6904本节,简单的介绍EF中的 ObjectContext ... -
Entity Framework 学习初级篇--EF基本概况
2011-07-05 16:53 3651自从Entity Framework(EF ... -
Entity Framework 学习高级篇—改善EF代码的方法
2011-07-05 16:39 10110本节,我们将介绍一些改善EF代码的相关方法,如NoTrac ... -
Entity Framework 学习总结之十一:POCO
2011-06-30 11:24 12060POCO Entity Framework ... -
Entity Framework 学习总结之十:加载相关对象
2011-06-30 11:23 3792加载相关对象 实体类型可以定义在数据模型中表 ... -
Entity Framework 学习总结之八:EntitySQL 复杂查询及函数
2011-06-30 11:21 2912复杂查询及函数 外键 Entity ... -
Entity Framework 学习总结之七:EntitySQL 基本查询
2011-06-30 11:20 2089Entity SQL 基本查询 SW ... -
Entity Framework 学习总结之六:EntitySQL 介绍入门
2011-06-30 11:19 1995Entity SQL Language 简介 ... -
Entity Framework 学习总结之五:EntityClient
2011-06-30 11:18 3494System.Data.EntityClient E ... -
Entity Framework 学习总结之四:对象服务介绍使用
2011-06-30 11:18 3052System.Data.Objects (System ...
相关推荐
Entity Framework技术系列之7:LINQ to Entities.pdf
Entity Framework技术系列之1:数据访问技术概述
Entity Framework 学习资料,值得下载的资源
entityframework框架源代码,需要深入了解entityframework的同学可以下载深入学习研究
Entity Framework 学习教程,chm格式,方便离线阅读,需要学习实体框架技术的同仁,可以下载来学习啦
本书是关于Entity framework code first 的详细介绍,在本书中,你可以学到从无到有的创建基于Entity framework code first的项目
vs2008 Entity Framework 1:1 1:多 多对多等模型展示
Entity Framework 学习(中文资料初中高级共14篇) pdf格式
Entity Framework 6 Recipes Entity Framework 6 Recipes
Entity Framework Core Cookbook - Second Edition by Ricardo Peres English | 9 Nov. 2016 | ISBN: 1785883305 | 340 Pages | MOBI/EPUB/PDF+Code Files | 6.2 MB Entity Framework is a highly recommended ...
Entity Framework 6 (EF6) is a tried and tested object-relational mapper (O/RM) for .NET with many years of feature development and stabilization.
Entity Framework Repository(含依赖注入)
电子书 Entity Framework 4 In Action
Z.EntityFramework.Extensions,基于2019年7月,3.21.2.0去除每月验证和强签名。适合.net4.0及以上
ef entityframework服务端 封装dll
Written by JuliaLerman, the leading independent authority on the framework,Programming Entity Framework covers it all -- from the Entity DataModel and Object Services to WCF Services, MVC Apps, and ...
本资料系统全面的介绍了Entity Framework,对学习此ORM框架的开发人员帮助很大
A comprehensive guide to the Entity Framework with insight into its latest features and optimizations for responsive data access in your projects About This Book Create Entity data models from your ...
实体框架Ado.Net Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。在EF中,提出使用概念模型建模,直接针对关系型数据库的物理模型的建模的架构。
Z.EntityFramework.Extensions 破解 注册机,详细破解方法