13 .net c# linq stored-procedures linq-to-sql
我对Linq to Sql的理解是它将采用我的Linq语句并将其转换为等效的SQL语句.
所以
var products = from p in db.Products
where p.Category.CategoryName == "Beverages"
select p
Run Code Online (Sandbox Code Playgroud)
刚刚变成
Select * from Products where CategoryName = 'Beverages'
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,我不会看到存储过程如何有用.
小智 40
Sprocs是盒子里的另一个工具.你可能会使用你喜欢的自动调节扳手来完成90%的任务,但是你不能在剥离的螺母上使用闪亮的东西.为此,一个好的'猴子扳手是你最好的朋友.除非你打破螺栓,否则你会遇到装配.
Ori*_*rds 14
安全.
我已经看过几个"安全最佳实践"指南,建议您通过SP执行所有数据访问,并且您只授予执行这些SP的权限.
如果客户端根本无法执行select或delete在任何数据库表上,则客户端被黑客攻击可能会降低风险.
我从来没有亲自参与过以这种方式工作的项目,它总是看起来像背后的巨大痛苦.
Ste*_*gan 13
啊,很多辩论的主题.
如今,许多人都认为LINQ-to-SQL等技术能够产生如此优秀的SQL,以至于性能优势微不足道.就个人而言,我更喜欢SQL专家调优SQL性能,而不是一般编码器,所以我倾向于不同意.
但是,我对存储过程的主要偏好与性能关系不大,而与安全性和配置管理有关.
我的大部分架构工作都是面向服务的解决方案,并且通过将数据库视为服务,使用存储过程可以显着地帮助它.
原则上,通过存储过程限制对数据库的访问会创建一个定义明确的界面,从而限制攻击面积并提高可测试性.允许应用程序直接访问底层数据会大大增加攻击面积,降低安全性,并使影响分析变得非常困难.
存储过程和Linq to Sql解决了不同的问题.
Linq to Sql特别适用于Microsoft SQL Server.
小智 7
我倾向于使用存储过程有几个原因:
缺点是,如果事情发展迅速,保持调用sprocs的代码与数据库同步可能会很麻烦.有关生成高效查询的要点可能算作过早优化.在一天结束时,在现实条件下无法替代基准测试表现.
我可以想到存储过程的几个很好的理由:
对于由一个人维护的小型应用程序,存储过程可能有点过分.
| 归档时间: |
|
| 查看次数: |
3067 次 |
| 最近记录: |