SQL与存储过程?
我在StackOverflow(LINQ初学者指南)上看到了“LINQ初学者指南”这篇文章,但有一个后续问题:
我们即将启动一个新项目,在这个项目中,几乎所有的数据库操作都将是相当简单的数据检索(还有另一个已经写入数据的项目段)。 到目前为止,我们大多数其他项目都使用存储过程来处理这些事情。 但是,如果它更有意义,我想要利用LINQ-to-SQL。
所以,问题是这样的:对于简单的数据检索,哪种方法更好,LINQ到SQL或存储过程? 任何特定的赞成或反对?
谢谢。
LINQ与sprocs的一些优势:
LINQ vs sprocs的一些缺点:
安全性和可管理性也是人们争论的问题。
我曾经是一个很大的sproc家伙,但我开始倾向于LINQ作为一个更好的替代品。 如果某些区域的sprocs显然更好,那么我可能仍会编写一个sproc,但使用LINQ访问它。 :)
由于DBA多年来一直备受折磨,所以我通常是将所有内容都放入存储过程的支持者。 在Linq的情况下,简单的CRUD查询确实不会有性能差异。
但在做出这一决定时请记住几件事情:使用任何ORM将您紧密地连接到您的数据模型。 DBA没有自由地修改数据模型而不强迫您更改编译后的代码。 通过存储过程,您可以在某个范围内隐藏这些更改,因为从过程返回的参数列表和结果集代表其合同,并且只要该合同仍然得到满足,内部程序就可以进行更改。
而且,如果Linq用于更复杂的查询,调整数据库变得更加困难。 当存储过程运行缓慢时,DBA可以完全专注于代码,并且有很多选项,这样合同在他/她完成时仍然可以满足。
我看到很多很多情况下,应用程序中的严重问题是通过更改存储过程中的模式和代码来解决的,而不会对已部署的已编译代码进行任何更改。
Linq可能是一种混合式的方法吗? 当然,Linq可以用来调用存储过程。
Linq to Sql。
Sql服务器将缓存查询计划,因此sprocs没有性能增益。
另一方面,您的linq语句将在逻辑上成为您的应用程序的一部分并进行测试。 Sprocs总是有点分离,难以维护和测试。
如果我现在正在从头开始研究一个新的应用程序,那么我只会使用Linq,而不是sprocs。
链接地址: http://www.djcxy.com/p/53013.html