我应该使用存储过程还是linq来提取adhoc数据

时间:2015-02-22 11:45:00

标签: c# vb.net linq

(注意,我知道this,但我相信这个问题不是基于意见的)

现在我可以

选项1:使用存储过程

我可以在SQL Server中编写一个存储过程,该存储过程获取tank的产品ID并返回购买它的人。如果由于某些原因,应该被拾取的某些人不会被存储过程选中(可能是程序中的逻辑错误,或者我可能忘记添加条件),我可以轻松地测试存储过程数据库

但那将是一个很长的存储过程:(

选项2:使用Linq

或者,如果我在Linq中完成所有操作并编写我的单元/集成测试,后来发现由于某些原因某些人没有被选中,那么测试原因将非常困难,因为测试将会正在运行我的模拟数据,而不是实际的数据库服务器。

此外,如果在linq查询中发现错误,则必须重新编译代码。

这里的首选方法是什么,因为它可以更容易地测试逻辑?我个人更喜欢linq方式,但我担心稍后会在选择逻辑中找到一个小错误并引起调试问题。

谢谢

1 个答案:

答案 0 :(得分:2)

这是一个偏好,但我更喜欢使用linq,因为可以限制数据库的逻辑和往返。对于复杂的查询,可能是多部分的,并且可能需要多个单独的子查询,存储过程是可行的方法 - 性能(在避免多次往返服务器的情况下)和调试(直接运行T-SQL)在SSMS中,直到你完全正确)。

99%的时间我在代码中执行查询(linq / c#),但有些情况下存储过程有意义,这可能就是其中之一。