ORM 不仅仅允许非 SQL 程序员与数据库对话!
ORM 无需处理大量手写 DAL 代码并获取数据的行/列表示,而是将表的每一行转换为强类型对象。
所以你最终得到例如Customer,您可以将其电话号码作为强类型属性访问:
string customerPhone = MyCustomer.PhoneNumber;
这比:
string customerPhone = MyCustomerTable.Rows[5].Column["PhoneNumber"].ToString();
在完成这项工作时,您不会从 IDE 获得任何支持 - 请注意列名输入错误!直到运行时你才会发现 - 要么你没有返回数据,要么你得到一个异常......不是很愉快。
首先,使用返回的 Customer 对象要容易得多,这些属性非常可用,是强类型的,并且可以在 Intellisense 中发现,等等。
因此,除了可能使您不必手工编写大量枯燥的 SQL 和 DAL 代码之外,ORM 还为使用数据库中的数据带来了很多好处——代码编辑器中的可发现性、类型安全等等。
我同意 - ORM 动态生成 SQL 语句并执行这些语句的想法可能很可怕。但至少在 Entity Framework v4 (.NET 4) 中,微软在优化所使用的 SQL 方面做得非常出色。在 100% 的情况下,它可能不是完美的,但在很大比例的情况下,它比任何非专业 SQL 程序员编写的任何 SQL 都要好得多......
另外:在 EF4 中,如果您真的想要并且看到需要,您可以随时定义和使用您自己的存储过程,用于在任何实体上进行 INSERT、UPDATE、DELETE。