当我阅读使用实体框架(或任何现代 ORM)的优缺点列表时,我很惊讶没有出现以下几点(自我引用):
使用强类型域实体允许在编译时进行类型检查,这实际上是对所有数据库操作进行验证。这是 ADO.NET 无法做到的(无论是使用内联 SQL 还是存储过程)。
对我来说,这是使用 ORM 的最大优势之一。在处理基于 ADO.NET 的应用程序时,我经常遇到的一个问题是来自 SQL 的运行时错误。静态检查完全消除了这一点。
谁能详细说明为什么这与许多开发人员没有太大关系?
当我阅读使用实体框架(或任何现代 ORM)的优缺点列表时,我很惊讶没有出现以下几点(自我引用):
使用强类型域实体允许在编译时进行类型检查,这实际上是对所有数据库操作进行验证。这是 ADO.NET 无法做到的(无论是使用内联 SQL 还是存储过程)。
对我来说,这是使用 ORM 的最大优势之一。在处理基于 ADO.NET 的应用程序时,我经常遇到的一个问题是来自 SQL 的运行时错误。静态检查完全消除了这一点。
谁能详细说明为什么这与许多开发人员没有太大关系?
哦,太好了。
它也不是免费的。EF 本质上是建立在 ADO.net 之上的,它只是使用反射在强类型类和实际列名之间来回转换。如果您的记录集相当小,这很好,但当您开始处理较大的数据集时,它会非常明显。一般来说,这个额外的延迟时间并不重要,因为如果说数据库需要两秒钟来提取数据,那么额外的毫秒(甚至一秒)会有什么不同。但是在某些情况下,速度至关重要,在这些情况下,您几乎必须使用原始 ADO 编写自己的构造。
这里也问了同样的问题。它包括一些很好的答案。
Programmers.stackexchange.com是一个更适合提问的地方。