3

假设我在内存中有一组 C++ 对象,并想使用 SQL 语句查询它们。我愿意实现某种类型的接口来公开对象的属性,例如数据库行的列。是否有可用的库来完成此操作?本质上,我试图在不使用 .NET 平台的情况下完成类似 LINQ 的事情。

4

3 回答 3

2

C++ 对象与 SQL 表不同。

如果要使用 SQL 语法来查询对象,首先需要将它们映射/持久化到表结构中(ORM,对象关系映射)。除了 Linq 之外,还有许多优秀的 ORM 解决方案。

在 SQL 表中表示您的对象后,您应该寻找 SQL 引擎来完成繁重的工作。大多数 SQL 平台可以配置为将表大部分或始终保留在内存中。

作为替代方案,您可以考虑专门设计用于缓存对象的系统。在 Linux 上,memcached 是首选。

于 2009-08-04T19:43:10.303 回答
1

对象世界和实体关系数据 (ER) 之间存在一个陷阱。其称为对象关系阻抗失配。基本上,这意味着您需要将对象概念“映射”到关系数据库概念,这称为对象关系映射 (ORM)。

多态性示例:派生类不是 ER 概念,因此您需要举例说明,属于同一类的所有对象的所有属性都将存储在具有所有“父级”属性或派生类(对象)的同一个表中将存储在与派生它的抽象类相同的表中。

最好使用社区支持的 ORM,但是当动机正确时,您的公司可以从拥有自己的 ORM 解决方案中受益。

在我们公司,我们开发了自己的 ORM 解决方案(6 年前开始,所以它是用 C++ 编写的,建模器是一个 Windows 桌面应用程序)。但现在我们可能会使用ADO.NET Entity Framework(LINQ 的“大哥”)或其他受支持的 ORM

于 2009-08-04T20:04:32.303 回答
0

我也一直在寻找这种东西,但似乎SQLlite是我能找到的最接近的。

于 2009-08-04T19:40:50.667 回答