老派的SQL DB访问与ORM(NHibernate,EF等)。谁赢?

时间:2020-03-05 18:52:32  来源:igfitidea点击:

我已经成功地编写了自己的SQL访问代码,并结合了存储过程和参数化查询以及为减少ADO.NET垃圾而编写的一个小型包装器库。过去,这一切对我来说都很有效,而且我的工作效率很高。

我要进入一个新项目-我应该把我以前的学校知识放到后面,然后研究基于ORM的解决方案吗? (我知道NHibernate和EF之间在概念上有很大的不同-我不想在这里讨论。为了争辩,让我们甚至把LINQ与老式的替代品放在一起。)根据我所知道的(并且非常了解)对ORM类型的东西在现实世界中的应用提出建议。

老式的ADO.NET代码还是ORM?我确定有一条曲线-曲线的投资回报率使事情值得吗?我很着急,愿意学习,但是确实有最后期限。

解决方案

回答

我发现在对代码进行原型设计时,LINQ to SQL的速度要快得多。当我现在需要某些东西时,它只是吹走了任何其他方法。

但是,这是有代价的。与手动滚动存储过程相比,LINQ速度较慢。特别是如果我们不太谨慎,看似微小的更改可能突然变成1 + N个查询。

我的建议。首先使用LINQ to SQL,如果无法获得所需的性能,则先使用proc进行处理。

回答

一个好问题,但一个很有争议的话题。

几年前Frans Bouma的这篇博客文章引用了动态SQL(暗示ORM)优于存储过程的优点,引发了激烈的火焰战争。

回答

在蒙特利尔的DevTeach上就该主题进行了精彩的讨论。如果我们访问以下URL:http://www.dotnetrocks.com/default.aspx?showNum=240,我们将能够听到该领域的两位专家(Ted Neward和Oren Eini)讨论每种方法的优缺点。 。在没有真正确定答案的主题上,可能会找到最好的答案。