亲爱的DBA - 我想使用LinqToSQL而不是存储过程,因为

时间:2009-07-08 17:28:06

标签: linq-to-sql stored-procedures

在我的组织中,我们必须回答一个单独的DBA小组来做出像使用LinqToSQL这样的决定。你认为使用L2S而不是存储过程的一些最佳理由是什么。

7 个答案:

答案 0 :(得分:6)

Stackoverflow问题Linq to SQL vs Stored Procedures?对双方都有一些好处。

使用存储过程可以更严格地控​​制查询,当性能问题时,这可能是一个加分。您还可以对过程进行更改,而无需重新编译和重新部署,这非常方便。

但是,使用LINQ可以获得类型安全性,您的DAL更容易保持版本化并与项目一起维护,更容易测试和更好的调试支持。

答案 1 :(得分:3)

我认为归结为代码集成。您无需查看存储过程,只需查看应用程序中的代码即可。

看一下这个链接...... http://www.linqpad.net/WhyLINQBeatsSQL.aspx

我还发现构建像LINQ查询这样的动态sql的能力似乎不那么动态且易于调试。例如,假设您有一个包含10个不同条件/过滤器的搜索页面。如果用户仅对其中两个进行过滤,则可以创建一个扩展方法,以便在某些条件为真时在查询中添加where过滤器。如果你有一个sproc,你会有一堆乱七八糟的东西要调试......

答案 2 :(得分:2)

您将以前在数据库中的功能移动到您的应用程序中,这可能是好事也可能是坏事。我认为LinqToSQL的一个强有力的论据是,如果你必须向DBA组提交存储过程的请求,等待它们完成,然后使用它们,它可以允许你使用Linq更快的周转时间。测试并解决任何问题。您至少可以使用Linq进行基本数据访问,然后根据需要使用存储过程(它们可以帮助缓解性能瓶颈)。

答案 3 :(得分:1)

使用L2S时,应用程序开发人员可以进行更多控制。所以,我想说,你可以快速修复一些东西而不需要与DBA小组进行额外的沟通。

除了非常以数据为中心的报告外,我现在很少使用存储过程。

答案 4 :(得分:1)

答案 5 :(得分:1)

它也可以防止SQL注入。

Sprocs也这样做,但是如果你使用linq2sql,DBA会关注这一点,所以让他们知道这将有助于说服你使用L2S

L2S还将允许DBA专注于数据库及其表结构,索引等的优化,而不必担心支持数据库中的任何sprocs,因为该职责将转移到开发团队。 / p>

答案 6 :(得分:0)

检查一下,有点在这里讨论过:

LINQ-to-SQL vs stored procedures?


此外,我们喜欢使用linq来读取数据和存储过程以更新数据,因为我们的sprocs中有一些业务逻辑(不幸的是)。我不同意sprocs中的商业逻辑,但最基本的除外。双方都可以提出争论,这些争论与您的环境有关。