关于ado.net:旧式SQL DB访问与ORM(NHibernate,EF等)。谁赢?

关于ado.net:旧式SQL DB访问与ORM(NHibernate,EF等)。谁赢?

Old-school SQL DB access versus ORM (NHibernate, EF, et al). Who wins?

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

我要进入一个新项目-我应该把我以前的学校知识放在后面,然后研究基于ORM的解决方案吗? (我知道NHibernate和EF之间有很多高概念上的区别,我不想在这里讨论。为了争辩,我们甚至将LINQ与传统的替代方法放在一起。)我正在寻找关于我所知道的(并且非常了解)ORM类型东西在现实世界中的应用的建议。

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


我发现在对代码进行原型设计时,LINQ to SQL快得多。当我现在需要一些东西时,它会吹掉其他任何方法。

但是要付出代价。与手动存储的过程相比,LINQ速度较慢。尤其是如果您不太谨慎,看似微小的更改可能突然变成1 N个查询。

我的推荐。首先使用LINQ to SQL,然后如果无法获得所需的性能,则使用swtich进行处理。


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

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


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


推荐阅读