ORM(对象关系映射)
它看起来像一个模型,它将关系数据库(如MySQL)的操作打包为对象,并提供编程方法(例如object.getMax())来操作程序中的数据库。
ODBC(开放式数据库连接)
它似乎是不同数据库之间的连接器。
例如,LIQN属于哪一个? ODBC是ORM的实现吗?
答案 0 :(得分:4)
这是两件非常大的事情,但我会给你一个粗略的概述......
开放式数据库连接是与数据库通信的规范。这是'语言'客户端和数据库将在其中进行通信。
ORM是一个很多工具实现的概念。这是一个概念,其中对象被映射到关系数据库,以便您使用对象在面向对象的代码中与数据库进行通信。 LINQ 到SQL 是ORM的一个实现。它可能使用ODBC类型连接来在对象和数据库之间执行该连接。
有大量的视频,博客和课程。
答案 1 :(得分:2)
ORM是一种将类和对象映射到关系表的技术(在抽象意义上)。例如,如果没有ORM,如果执行SQL查询,则会获得包含表行的结果集,以及这些行中的列。无论您是在查询汽车还是人员,结果集的格式始终都是相同的。使用ORM,您的程序可以获得类Car
或Person
的实例,随时可以使用。
ODBC是一种中间件API,可统一对各种数据源的访问。它试图消除协议之间的差异,以便您的代码可以连接到许多不同的引擎,而不必担心每个协议使用哪种协议。
LINQ是一种查询语言。一些LINQ提供程序将是ORM,有些可能通过ODBC访问数据库;但这三个都是截然不同的概念。
您可以在LINQ中编写查询,其提供程序可以通过ODBC API访问数据库,并将结果作为ORM返回给您(即通过将结果映射到表示数据库记录的对象)。
这些步骤中的每一步都可以用更基本的步骤代替:你可以用SQL的PostgreSQL方言编写查询;使用PostgreSQL特定的协议通过PostgreSQL驱动程序访问数据库;并将数据作为包含特定数量列的行集合返回。
或者你可以做任何组合:通过ODBC访问但获取行/列;在直接的专有协议连接上使用ORM。
答案 2 :(得分:0)
区别在于:
ODBC将记录集作为元组返回
创建一个新命令dbhandle,用于进一步操作数据库
ORM将记录集作为对象返回
内省数据库以发现其主键和外键关系,以构建表类之间的交叉链接
<强>参考强>