Dapper.net ORM 最佳实践 - 存储过程是否有必要防止 SQL 注入/它们是否更快?

Dapper.net ORM best practice - are Stored Procedures necessary to prevent SQL injection / are they faster?

我是 Dapper.net 和微型 ORM 的新手。

它们似乎经常与存储过程一起使用。是否仍然需要使用存储过程(而不是将 SQL 查询直接写入您的 DAL)来防止 SQL 注入攻击。

还有性能好很多吗?

使用 Dapper 和其他微型 ORM 的最佳实践是什么——使用存储过程还是不使用存储过程?

不,不需要存储过程来防止注入 - 您只需要在直接查询中正确使用参数,它们同样安全。

SP 的性能 可以 更好,但我经常发现它们更差,更差 - 这没有任何意义,但是 google 'parameter-sniffing' 并且您会经常看到查询优化器试图对 SP 过于聪明并最终 运行 痛苦地慢 - 有解决这个问题的方法,但我越来越多尽可能直接使用 SQL,仅在必要时使用 SP 进行补充 - 这种情况很少见。