【发布时间】:2009-07-08 17:28:05
【问题描述】:
在我的组织中,我们必须向一个单独的 DBA 组负责,以做出使用 LinqToSQL 等决策。您认为使用 L2S 而不是存储过程的最佳理由是什么?
【问题讨论】:
标签: linq-to-sql stored-procedures
在我的组织中,我们必须向一个单独的 DBA 组负责,以做出使用 LinqToSQL 等决策。您认为使用 L2S 而不是存储过程的最佳理由是什么?
【问题讨论】:
标签: linq-to-sql stored-procedures
Stackoverflow 问题Linq to SQL vs Stored Procedures? 对双方都有好处。
使用存储过程,您可以更严格地控制查询,当性能很重要时,这可能是一个加分项。您还可以对过程进行更改,而无需重新编译和重新部署,这很方便。
但是,使用 LINQ,您可以获得类型安全,您的 DAL 更容易与项目一起保持版本控制和维护,更容易测试和更好的调试支持。
【讨论】:
我认为这归结为代码集成。您无需查看存储过程,只需查看应用程序中的代码即可。
看看这个链接... http://www.linqpad.net/WhyLINQBeatsSQL.aspx
我还发现构建动态 sql (如 LINQ 查询)的能力看起来不那么动态,而且很容易调试。例如,假设您有一个包含 10 个不同标准/过滤器的搜索页面。如果用户只过滤其中 2 个,您可以创建一个扩展方法,在某些条件为真时在查询中添加 where 过滤器。如果你有一个存储过程,你就会有一堆乱七八糟的东西要调试......
【讨论】:
您将先前在数据库中的功能移动到您的应用程序中,这可能是好事也可能是坏事。我认为 LinqToSQL 的一个强有力的论点是,如果您必须将存储过程的请求提交给 DBA 组,等待他们完成,然后与他们合作,它可以让您使用 Linq 获得更快的周转时间测试并解决任何问题。您至少可以使用 Linq 进行基本数据访问,然后在需要时使用存储过程(它们有助于缓解性能瓶颈)。
【讨论】:
使用 L2S 时,更多的控制权在应用程序开发人员手中。因此,我想说的是,您可以快速修复某些问题,而无需与 DBA 组进行额外的沟通。
除了以数据为中心的报表,我现在很少使用存储过程。
【讨论】:
【讨论】:
它还可以防止 SQL 注入。
Sprocs 也可以,但如果您使用 linq2sql,DBA 会担心这一点,因此让他们知道这将有助于说服您使用 L2S
L2S 还将允许 DBA 专注于优化数据库及其表结构、索引等,而不必担心支持数据库中的任何存储过程,因为该责任将转移到开发团队。
【讨论】:
看看这个,这里有点讨论过:
LINQ-to-SQL vs stored procedures?
此外,我们喜欢使用 linq 读取数据并使用存储过程来更新数据,因为我们的存储过程中有一些业务逻辑(不幸的是)。我不同意存储过程中的商业逻辑,但是除了最基本的。双方都可能存在争论,这些争论与您的环境有关。
【讨论】: