寻求关于嵌入式.NET数据库(如db4o、NHibernate或RavenDB)的指导

6
我有一个对象模型,想要使用嵌入式数据库进行存储。到目前为止,我一直在寻找db4o、NHibernate to SQLCE(带有linq)和RavenDB等工具。这将用于桌面C#应用程序。
我要利用的关键特性是:查询使用Linq或类似语法(不使用SQL或HQL)、嵌入式数据引擎、pocos、poco first模型、无需安装(没有注册表或类似项)。
有人能推荐一个吗?我所看的三个工具中哪一个最好?还有其他选择吗?对于这三个工具,有人可以推荐一个比另一个更好吗?
谢谢!

可能是嵌入式数据库.NET的重复问题 - Mauricio Scheffer
同时也可以参考以下两个链接:https://dev59.com/nE3Sa4cB1Zd3GeqPydAo 和 https://dev59.com/LXVC5IYBdhLWcg3whBaj - Mauricio Scheffer
3个回答

10

这三个建议的数据库在性质上非常不同。SQLCE使用Hibernate作为RDBMS和ORM,db4o作为对象数据库,RavenDB作为文档数据库。它们每个都有其优点。

SQL CE & NHibernate-Combo

好处:

  • 工具支持非常好,知识和大型社区都在那里
  • 易于升级到MS SQL服务器
  • 极佳的报告支持
  • 强大的SQL功能

坏处:

  • 需要映射
  • 面向对象和关系型之间的映射并不容易,并且可能会导致复杂模型的问题。

RavenDB

好处:

  • 不需要任何映射
  • 易于使用
  • 强大的索引功能
  • JSON和HTTP访问

坏处:

  • 如果您的领域不适合文档导向的方法,则会相当痛苦
  • 它不支持.NET Framework客户端配置文件(特别重要的是,OP的问题涉及嵌入式数据库)

db4o

好处:

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

坏处:

  • 工具支持较弱。

据我所知,这三个都支持LINQ和POCO-first方法。但是由于NHibernate和SQL CE仍然需要大量映射,因此它们并不像可能的摩擦少。如果您的重点是POCO first、LINQ支持、嵌入式使用和易于使用,则应尝试RaveDB或db4o。如果您的重点是“安全性”、社区知识、工具支持和报告,则应选择NHibernate和SQL CE。


谢谢。鉴于我的领域不是很大,使映射工作过于费力,我认为NHibernate方法可能是最好的选择。主要是因为有社区支持。RavenDB还太新,知识库还不够丰富。 - David B
作为嵌入式数据库,NHibernate存在严重问题。我会选择Linq-To-SQL或EntityFramework4而不是现在选择NHibernate。这两种技术都已经集成到框架中,并且没有外部依赖。 - Eric Falsken

3

Firebird 是一个优秀的嵌入式数据库,长期支持企业级数据库的所有现代特性:

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

您可以获取.NET提供程序(根据网站上的信息,最近更新于5月24日),它支持Entity Framework和Linq。


0

请参考此问题。如需LINQ支持,请查看DbLinq,或者由于您已经打算使用NHibernate,因此可以使用NHibernate自己的LINQ提供程序。


我看到了那些其他的帖子。问题是它们专注于嵌入式关系数据存储,而我正在寻找一种可以存储对象模型的东西。它们提供了在NHibernate后面的选项。DbLinq将为我提供一个基础数据存储的linq提供程序,但它不会提供我正在寻找的丰富的POCO first模型。我很感激这个建议,如果我选择NHibernate,我可能会考虑这些选项。然而,我仍然在寻找什么最适合POCO first模型的建议。 - David B
1
@David B:请查看Fluent NHibernate的自动映射:http://wiki.fluentnhibernate.org/Auto_mapping - Mauricio Scheffer
谢谢,这正是我在考虑的。然而,最近我看到了更多关于另外两个选择的积极消息,所以我希望了解一下NHibernate是否仍然是首选。 - David B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接