6

我有一个要使用嵌入式数据库存储的对象模型。到目前为止,我一直在研究 db4o、NHibernate 到 SQLCE(w/linq)和 RavenDB。这将在桌面 C# 应用程序中使用。

我希望利用的关键特性是:Linq 或类似的查询(无 SQL 或 HQL)、嵌入式数据引擎、pocos、poco 第一模型、无安装(无注册表或类似)

任何人都可以推荐一个吗?我正在寻找的三个是最佳选择吗?还有其他选择吗?三者中,有谁能推荐一者?

谢谢

4

3 回答 3

10

那么这三个建议的数据库在性质上是非常不同的。SQLCE 与 Hibernate 作为具有 ORM 的 RDBMS,db4o 作为对象数据库,RavenDB 作为文档数据库。他们每个人都有自己的长处。

SQL CE & NHibernate-Combo 好的:

  • 在工具、知识和大社区方面提供了极好的支持
  • 易于升级到 MS SQL 服务器
  • 极好的报告支持
  • SQL 的力量

坏处:

  • 需求映射
  • OO 和关系世界之间的映射并不容易,并且可能导致复杂模型出现问题。

乌鸦数据库

好的:

  • 不需要任何映射
  • 便于使用
  • 强大的索引
  • JSON & HTTP 访问

坏处:

  • 如果您的域不适合面向文档的方法,那将是非常痛苦的
  • 它不支持 .NET Framework 客户端配置文件(这一点特别重要,因为 OP 的问题与嵌入式数据库有关)

db4o

好的:

  • 不需要任何映射
  • 便于使用
  • 存储模型接近对象模型。这也适用于非常复杂的模型。
  • -

坏处:

  • 工具支持薄弱。

Afaik 所有三个都支持 LINQ 和 POCO-first 方法。然而,由于 NHibernate 和 SQL CE 仍然需要大量的映射,因此它并没有尽可能地无摩擦。

我认为如果您首先关注 POCO、LINQ 支持、嵌入式使用和易于使用,我会尝试 RaveDB 或 db4o。如果您的重点是“安全”、社区知识、工具支持和报告,我会选择 NHibernate 和 SQL CE。

于 2010-08-31T13:53:59.050 回答
3

Firebird是一个了不起的嵌入式数据库,它长期以来一直支持企业数据库的所有现代特性:

  • ANSI SQL
  • 存储过程
  • 触发器

您可以获得.NET 提供程序(根据该站点的最新更新日期为 5 月 24 日),它支持实体框架和 Linq。

于 2012-09-09T13:40:13.267 回答
0

看到这个问题。对于 LINQ 支持,请查看 DbLinq,或者由于您已经打算使用 NHibernate,您可以使用 NHibernate 自己的 LINQ 提供程序。

于 2010-08-27T01:15:17.457 回答