当前位置:  开发笔记 > 编程语言 > 正文

C#应用程序 - 我应该使用存储过程还是使用C#编程技术的ADO.NET?

如何解决《C#应用程序-我应该使用存储过程还是使用C#编程技术的ADO.NET?》经验,为你挑选了2个好方法。

我有一个C#应用程序,我正在创建,它存储SQL Server中的所有数据.

有时我更容易以编程方式进行数据更改,有时在SQL Server数据库中调用存储过程和函数并调用它们会更容易.

我对编程很新,我不知道每种方法的微妙优点和/或缺点是什么.

我想我应该以某种方式做事而不是使用几种方法.

我的代码开始看起来像一个随机的思想集合,只是推到一个地方.Joel Spolsky没有冒犯.我喜欢他的书.

这是一个独立项目,所以我可以重构任何我希望改进的代码.所有选项都在桌面上.

谢谢,

J3r3myK



1> marc_s..:

好吧,如果你像对象或服务那样查看数据库,Stored Procs可以是一个额外的抽象层次或一组函数/方法.这可能是有益的,因为您可以隐藏底层实现细节并在需要时更改它而不会破坏应用程序(只要您离开界面,例如单独存储的proc参数).此外,如果您可以隐藏一组存储过程后面的表详细信息,无论有人如何访问您的数据库,他们只能使用您设计并为其编写的方法与其进行交互 - >某人启动Excel并入侵您的数据库的风险.

另一方面,Stored Proc需要广泛的T-SQL知识,您将在两组代码库中传播您的业务和应用程序逻辑,这可能是一个缺点.您可以在存储过程中执行的任何操作也可以在ADO.NET中使用直接SQL语句完成,并且它甚至不再慢.

Stored Procs的另一个优点是,如果你的proc中出现了问题,你可以通过使用修复程序部署proc来修复它 - 你不需要触摸你的C#应用​​程序.如果您每年只获得3个版本,那么在"托管"环境中这可能是一个很好的优势 - 通过修复存储过程来应用修补程序可以成为您的实时保护程序!:-)

总而言之:存储过程有很多优点和缺点; 我建议,如果你对编写T-SQL感到满意,为什么不尝试一下,看看它是如何为你工作的.如果从长远来看感觉很麻烦或太不灵活或者工作太多,你可以随时切换回在C#应用程序中使用直接SQL.

只需我0.02美元.渣



2> Spence..:

还有两点尚未涉及:

可以将SProc放置在模式中,并模拟不同的模式.这意味着您可以锁定数据库访问权限并仅授予用户执行SProcs的权限,而不是选择更新等,这是一个非常好的安全奖励.

其次,根据您的操作,sproc可能会非常快.如果您受网络IO约束并且能够对数据执行设置操作,在单个存储过程中执行此操作而不是获取ENTIRE数据集,则对其进行处理,然后传输更改将使您的速度提高.

对于事务也是如此,如果您需要串行执行操作(即,一次更改两个表中的值,这涉及一些逻辑),那么您将需要保持事务所花费的时间来计算值并传回两个SQL查询,而存储过程可以在一个过程中完成.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有