我的公司希望在.Net中使用ORM进行新的开发.我们目前正在关注nHibernate,因为它很受欢迎,但LLBLGen是我们可能考虑的另一种选择.成本不是主要因素.我们需要一个解决方案,提供域模型与数据库的良好分离,良好的缓存策略,开发效率(即如果我可以在GUI中编辑它而不是配置文件,那么好),良好的客户支持.
我知道nHibernate非常受欢迎,但我也知道价格(它是免费的)可能是开源类型的原因之一.由于成本不是主要因素(除非价格> 10,000美元),根据我们的情况,您会选择哪种?另外,除了我列出的因素之外,您认为在选择ORM时最重要的其他因素是什么?
解析度
我们最终决定将NHibernate作为一种解决方案,但事后看来,我认为如果我们重新做一遍,我会选择LL.我刚刚找不到xml映射文件.我为NHibernate找到的代码生成器留下了很多不足之处.我确实发现Fluent NHibernate是一个有趣的开发,但我宁愿在使用之前先等待它成熟.
事实证明,我学习过程中最重要的部分不是技术,而是两种设计模式:存储库和分离的界面模式.通过定义用于数据访问的存储库接口(Jeffrey Palermo上有许多博客文章以及Apress和Wrox MVC书籍也显示了这一点),我们可以使用LinqtoSQL,LLBLGen,NHibernate等,并交换DAL实现稍后如果我们改变.因此,当我的一个同事在他的应用程序上使用NHibernate时,我选择在我最近的应用程序上使用LinqToSQL,它运行得很好.
如果你不介意付钱,我会建议LLBLGen.
完整的功能列表在这里.
从网站:
真正的数据库独立代码
完整实体类型继承
Linq的支持
键入的列表和类型化的视图
存储过程支持
灵活的并发机制
细粒度的验证框架
派生表支持