我正在开始一个新项目,我正在寻找一个非常好的 ORM 或一个非基于 SQL 的持久层。
对于这个项目,我真的不关心数据是如何持久化的,只要它可以以合理的速度进行查询和存储,最重要的是通过简单的查询。
并发应该被无缝处理(前端将在另一层,并且会有几个同时使用的用户,虽然不一定处理相同的数据)并且我不必关注数据层(简单查询,自动懒惰加载等)更好。
我还想不惜一切代价避免与基于字符串的查询相混淆,因此支持 LINQ 或其他直观且可能是强类型查询的工具会获得很大的好处。
最后使用 POCO 对象是我真正想做的另一件事
这是我评估过的产品列表以及它们不适合的原因,只是为了让我看不到有关使用这些产品的任何建议:
- NHibernate:疯狂的 xml 东西,设置太多,维护复杂性高,模型更改成本高,会话工厂很乱,不适合我的需求
- Castle ActiveRecord:基于 NHibernate,很少的文档加上一些与 NHibernate 相关的问题仍然适用。此外,为了获得体面的模型,它需要这么多属性,以致于手动创建模式会更好,而处理关系的方式是一种耻辱。
- Linq To SQL:缺少 POCO 对象,根据 MS 的说法,加班时间不会有太大改善(EF 是他们所承诺的)
- Entity Framweork:虽然在 v4 中 POCO 对象是可能的,但它们仍然非常老套,并迫使您做太多的手动工作来进行设置。此外,v4 只是一个测试版
- LLBLGen Pro:很好,尤其是使用 SelfServicing 适配器,但不是 POCO。此外,LINQ 提供程序还不完美。最后,通过 LINQ 删除一组对象是不可能的,这会导致混合 API(其中一个很不直观)并且我不喜欢。
- XPO:除了直观、非常慢、并发问题之外的任何东西,而不是 POCO
- SubSonic SimpleRepository:有几分钟我以为我在做梦。当我弄清楚这件事如何处理人际关系时,这个项目就结束了
我还研究了 MongoDB 和 CouchDB,但在这些情况下,相关对象的捕获看起来需要进行太多测试才能正确处理。此外,它们都不提供强类型查询。
提前感谢您的建议!