寻找有关嵌入式.NET数据库的指南(例如db4o,NHibernate或RavenDB)

我有一个对象模型,我想使用嵌入式数据库存储.到目前为止,我一直在查看db4o,NHibernate到sqlCE(w / linq)和RavendB.这将用于桌面C#应用程序.

我希望利用的主要功能是:Linq或类似的查询(无sql或HQL),嵌入式数据引擎,pocos,poco第一模型,无安装(无注册表或类似)

任何人都可以提出一个吗?这三个我正在寻找最好的选择吗?还有其他选择吗?在这三个中,任何人都可以推荐一个吗?

谢谢

解决方法

那三个建议的数据库的性质非常不同. sqlCE使用Hibernate作为RDBMS,使用ORM,db4o作为对象数据库,RavendB作为文档数据库.他们每个人都有自己的优势.

sql CE& NHibernate的-COMBO
好处:

>非常好的工具支持,知识和大社区就在那里
>易于升级到MS sql服务器
> Extrem良好的报告支持
> sql的强大功能

坏事:

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

RavendB

好处:

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

坏事:

>如果您的域不适合面向文档的方法,那将非常痛苦
>它不支持.NET Framework Client Profile(由于OP的问题涉及嵌入式数据库,因此特别重要)

db4o的

好处:

>不需要任何映射
>易于使用
>存储模型关闭对象模型.这也适用于非常复杂的模型.

坏事:

>工具支持薄弱.

Afaik三者都支持LINQ和POCO-first方法.然而,自从NHibernate& sql CE仍然需要大量的映射,而不是尽可能无摩擦.

我想如果你首先关注POCO,LINQ支持,ebedded用法和易用,我会尝试RaveDB或db4o.如果您关注“安全”,社区知识,工具支持和报告,我会选择NHibernate和sql CE.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...