我有一个对象模型,我想使用嵌入式数据库存储.到目前为止,我一直在查看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.