Linq vs存储过程

时间:2010-04-28 08:35:04

标签: asp.net linq stored-procedures

哪一个更适合企业CMS开发: LINQ或SP?

4 个答案:

答案 0 :(得分:1)

存储过程可以与Linq2Sql(和实体框架)一起使用,因此它不是一个或另一个的选择。

答案 1 :(得分:1)

一般来说,我所做的是LINQ to Views和LINQ to Stored Procedures。这不是什么首选的问题,因为LINQ解决了如何在SQL查询运行存储过程的情况下管理数据,以允许对数据进行查询操作(或者对我来说,主要是保存)这样做比较慢。

我想说如果有必要的话你会想要两者都使用。您是否保存到需要将多个表保存为一个实体的实体?如果是这样,请使用存储过程和LINQ。如果您对表使用1对1实体关系,那么只需使用LINQ。

答案 2 :(得分:0)

我会从CMS的数据库缓存结果,因为您可能会反复请求相同的数据(缓存数据集,或使用页面缓存,或者如果使用LINQ则缓存对象)。

然后使用LINQ或SP无关紧要,但我只使用LINQ。

答案 3 :(得分:0)

对于简单的CRUD表(没有连接!!!)操作LINQ to SQL很好,但是对于任何更复杂的(需要连接)我总是使用存储过程(如果你愿意,可以使用Linq存储过程)

在这个网站和其他网站上有很多争论。对我来说,你通常可以将职业Linq阵营分成最近进入编程的人,并且没有必须使用存储过程的历史,即没有大量参与以前项目的数据库方面。

形成我使用纯LINQ,存储过程以及这两者的混合来处理多个项目的经验,这两个原因我将坚持Linq用于基本CRUD和存储过程,以用于更复杂或依赖性能。

1 - 部署/安全 - 任何在现实世界中工作过的人都非常清楚,将数据库逻辑分离到存储过程中并且没有合并到源代码和已发布的DLL中是一个巨大的优势。您可以使用角色和SQL服务器安全性为每个查询添加适当的安全/访问层,这对于任何严肃的企业级公司都是必不可少的,您还可以更改任何存储过程的SQL,而无需执行主要版本的新版本申请(dll)。我不在乎你声称自己有多好使用存储过程来解决实时问题和性能瓶颈,并且必须使用新的应用程序版本来做这件事本身就是一场噩梦。

2 - 性能/代码嗅觉 - 我看到很多应用程序散落着大量写得不好且效率低下的Linq。开发人员对Linq很懒,一点点隐藏的懒惰Linq到SQL查询,导致你在企业级系统上调试性能问题的噩梦 - 这个座右铭“让它尽可能快地完成”似乎很普遍。自从Linq问世以来,我看到了更多的Spaghetti代码,而不是微软自COM以来发布过的任何类库/模式。