细说LINQ存储过程

开发 后端
要说LINQ存储过程的设计,追本溯源,就一定要从存储过程本身说起。作为一个存放在数据库中的脚本,存储究竟扮演了一个什么样的角色呢?且听笔者细细道来。

LINQ时代来临了,LINQ存储过程依然不能少,存储过程总会十个重头戏,本文笔者就来阐述一下自己对存储过程及LINQ存储过程的看法。

要说LINQ存储过程的设计,追本溯源,就一定要从存储过程本身说起。作为一个存放在数据库中的脚本,存储究竟扮演了一个什么样的角色呢?且听笔者细细道来。

一、何谓存储过程?

存储过程者,乃是存放在数据库中的一个脚本也。具体地说,存储过程是保存起来的、可以接受或返回用户提供的参数的T-SQL语句的集合。使用存储过程最基本的好处是,可以将多个SQL语句打包在一起作为一个组来执行,如果在应用程序中恰当地使用存储过程就可以提高应用程序的效率。

二、存储过程之优点

1. 存储过程通常可以为系统带来性能改善,因为数据库可以优化该过程所使用的数据访问计划,并能为后续的重用实现高速缓存。

2. 存储过程可以在数据库内部得到单独的保护。管理员可以授予客户端执行存储过程的权限,而不赋予它访问底层表的权限。

3. 存储过程可以使得维护更加方便,因为通常修改存储过程要比更改已部署的组件内部硬编码的代码中包含的SQL语句更简单。但是随着存储过程实现的业务逻辑的增加,这一优点将有所减弱。

4. 存储过程在底层数据库模式的基础上增加了额外的抽象层。存储过程的客户端被隔离在存储过程和底层模式的实现细节之外。

5. 存储过程可以减少网络流量。SQL语句可以批量执行,应用程序不必发送多个SQL请求。

三、存储过程之缺点

在有些情况下仍然不推荐使用存储过程,或者使用存储过程不可行。

1.在应用程序涉及大量的业务逻辑和处理时,如果完全用存储过程实现业务逻辑,就会给服务器带来过多的负荷。这种类型的处理例子包括数据传输、数据遍历、数据转换以及密集的计算操作。应该将这一类型的处理转移到业务过程或者数据访问逻辑组件中,它们比数据库服务器更具可伸缩性。

2.  不要将所有业务逻辑都放到存储过程中,否则当需要在T-SQL中修改业务逻辑时,将影响应用程序的维护和灵活性。例如,支持多个关系数据库管理系统的ISV的应用程序不必为每个系统维护独立的存储过程。

3.  渗编写和维护存储过程在大多数情况下是一项并非所有开发人员都拥有的专门技能。这一情况可能会给项目开发计划引入瓶颈。

四、LINQ存储过程之优点
  
LINQ技术是Visual Studio 2008和.NET框架3.5中一项突破性创新,它在对象领域与数据领域架起了一座桥梁。此外,LINQ查询功能直接可以嵌入到.NET框架3.5所支持的编程语言中。归纳来看,其具有如下优势:查询语法简单,易于书写;语法错误及查询数据的类型更加安全;LINQ存储过程提供了较强的过滤、排序及分组等处理能力;易于处理多数据源和多数据格式数据。

五、时代要求LINQ存储过程仍不可缺少

尽管LINQ存储过程在新开发环境中具备了明显的优势,但其在处理复杂的数据库查询方面仍存在性能问题。另一方面,LINQ to SQL技术基于ADO.NET,传统SQL查询资源在一定时期内仍普遍存在。所以,LINQ对于传统SQL查询仍提供了兼容性支持。LINQ to SQL中仍可直接调用传统SQL查询语句及存储过程中即是证明。

因此,在实际开发中应当基于数据库资源实际,在目前情况下,把LINQ查询与适当的传统SQL查询相结合仍为推荐的数据库方案。

以上就是对存储过程以及LINQ存储过程的分析。

【编辑推荐】

  1. 详谈Linq查询结果分析的方法
  2. 简简单单学习Linq查询语法
  3. 详细阐述Linq插入数据的操作方法
  4. 浅析Linq插入数据的实现方法
  5. 简单解决Linq多条件组合问题
责任编辑:阡陌 来源: 路由网
相关推荐

2009-09-09 10:54:52

Linq存储过程返回

2009-09-15 11:08:01

LinQ调用存储过程

2009-09-17 15:51:39

Linq to sql

2009-09-17 15:22:38

LINQ to SQL

2009-09-13 19:24:33

LINQ存储过程

2009-09-17 10:40:23

linq存储过程

2009-09-17 11:32:52

LINQ调用存储过程

2009-09-11 15:12:26

LINQ执行存储过程

2009-09-17 10:27:55

linq存储过程

2009-09-14 16:29:39

LINQ嵌套

2010-03-05 13:54:09

2010-07-15 12:38:14

SQL Server存

2021-10-15 06:43:11

数据库存储过程

2020-11-26 10:33:44

MySQL存储函数

2009-08-04 10:20:22

C#源码存储过程

2010-10-29 16:22:37

SQL存储过程

2009-03-25 10:48:08

存储银行Oracle

2009-06-17 10:33:17

Hibernate 存

2009-06-19 16:22:55

Java存储过程

2009-07-17 13:54:51

JDBC存储过程
点赞
收藏

51CTO技术栈公众号