我目前正在做一个项目,在这个项目中,我将把数据访问层从自定义的ORM替换为实体框架(该产品几乎已经完成,完成后的任何更改都将是更改请求或错误修复)。
发布于 2015-03-30 18:01:42
绝对最重要的度量将是执行的数据库查询的数量。如果ORM对逻辑代码的转换导致了不同数量的查询,这将产生一种效果,使任何其他差异都相形见绌。您应该特别注意"n+1"-pattern,其中ORM将在遍历子对象时对集合中的每个项执行单独的查询。至少在EF中,您通常可以在加载子对象的急切和懒惰(n+1)之间做出选择,所以在排除其中一个对象之前,一定要知道如何最优地使用ORM。
其次,您应该查看从数据库返回的数据量。如果一个ORM在客户端执行某些筛选,而另一个在sql中执行某些筛选,则可能存在差异。在将过滤器转换为sql方面,有些ORMS比其他的更聪明。显然,最好在数据库端尽可能多地进行过滤。
另一方面,如果ORM生成等价的sql (这并不是不可能的),那么性能差异很可能很小,甚至可以忽略不计,您的选择应该基于其他因素,比如可维护性和开发人员的熟悉程度。
https://softwareengineering.stackexchange.com/questions/277777
复制相似问题