.NET中的对象关系映射器和存储过程用法

时间:2009-03-24 11:25:15

标签: .net linq stored-procedures orm

鉴于他们在大多数情况下会为您生成CreateReadUpdateDelete(CRUD)功能,这是否意味着存储过程胜出'经常使用?如果这些方法使用LINQ那么这意味着没有使用存储过程,对吗?

非常感谢任何澄清。

1 个答案:

答案 0 :(得分:3)

大多数ORM(包括LINQ-to-SQL和EF)将为您提供自动CRUD或存储过程的选择。

例如,虽然我很高兴让ORM处理简单的同类CRUD问题(插入简单的记录等),但如果我有一个以非平凡的方式跨越复杂数据的关键搜索方法,我可能会选择使用UDF(或SP)来确保我可以正确地对其进行分析,调整等。

在某些情况下,存在阻止直接CRUD的安全/审计问题,但在大多数情况下涉及应用服务器,这是一个人为的担忧:如果黑客已经破坏了您的应用服务器,您已经遇到了重大问题 - 如果他们知道架构,他们通常可以使用SP来做同样多的伤害。

如果您在不同技术上使用来自多个应用程序的相同后端,那么SP也很有用。

围绕SP与文本命令的许多原始性能争论现在基本上没有实际意义;正确参数化的文本查询可以使用查询缓存,并且是注入安全的等等。