调试 - 调试存储过程非常困难,但由于LINQ是.NET的一部分,您可以使用Visual Studio的调试器来调试查询。
部署 - 对于存储过程,我们需要提供一个额外的脚本来处理存储过程,但是对于LINQ,所有内容都编译到单个DLL中,因此部署变得更加容易。
类型安全 - LINQ是类型安全的,因此在编译时对查询错误进行类型检查。在编译时遇到错误比运行时异常要好得多!
内置安全性 - 我之前喜欢存储过程的原因之一是它们强制使用参数,有助于减少SQL注入攻击。LINQ to SQL已经参数化输入,同样安全。
减少工作量 - 在使用LINQ之前,我花费了很多时间构建DALs,但现在我的DataContext就是DAL。我也使用过OPFs,但现在我有了带有多个提供程序和许多其他第三方提供程序的LINQ,使我受益于以前的优点。
注意:如果您只是进行简单的INSERT、UPDATE和DELETE语句,那么LINQ是最好的选择(在我看来),并且所有优化都已经为您完成了。对于更复杂的工作,我建议使用存储过程。
有关更详细的信息,请参阅:LINQ相对于存储过程的优势是什么?
如果你在谷歌上搜索,你会发现一些与你的问题类似的SO问题。
你可以查看这个linq-to-sql-vs-stored-procedures, linq-over-stored-procedures