我的公司希望在.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,它运行得很好。
答案 0 :(得分:8)
如果您不介意付款,我会建议LLBLGen。
功能完整列表here.
来自网站:
真正的数据库无关代码
全 实体类型继承
Linq支持
输入列表和类型化视图
存储过程支持
灵活的并发机制
细粒度验证框架
派生表支持
答案 1 :(得分:4)
查看DataObjects.Net(GPL +商业广告)。
答案 2 :(得分:3)
我建议你先看看各种类似的问题,例如:https://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net
答案 3 :(得分:3)
自2003年以来,我一直在使用LlblGenPro。它是一款出色的产品,价格合理,通过解决方案设计网站提供出色的支持。 Frans(主要开发人员)根据需要发布补丁并经常进行新的完整安装,以便遇到问题的客户可以快速利用修复。
当前版本支持Linq及其传统的访问基础架构。版本3正在开发中,但可能要到2010年才会发布。
LlbGen首先阅读您当前的数据库模式,与nHibernate相比,这可以节省开发db to object mapping的时间。
有些事情我想用LlblGen改进,但我是一个非常幸福的长期用户,他们的支持是无法击败的。
答案 4 :(得分:2)
这取决于你想要的东西:
您是否想要创建自己的Domain类,您不必通过ORM定义的基类或接口继承它们,然后NHibernate是首选解决方案。
您是否希望根据数据库模型自动生成实体类,那么您应该选择LLBLGen。
答案 5 :(得分:2)
对LLBLGEN的另一次投票,离不开它!
答案 6 :(得分:1)
我们经常使用nHibernate。到目前为止一切顺利。
答案 7 :(得分:0)
Signum Framework有一个full LINQ Provider,它基于实体驱动的方法。另一方面,它只适用于新开发(不适用于现有数据库)。
答案 8 :(得分:0)
如果你从头开始,你可以使用具有坚实背景的NHiberbate。但是,我们在多个项目中使用LLBLGen Pro,它非常稳固和正交。它也有很好的文档。 NHibernate有一个很大的社区(如果我们也加入Hibernate),但LLBLGen是一个非常成熟的产品,非常有用的论坛,以及非常好的文档。
什么是RDMS?我们正在使用LLBLGen Pro和Oracle,它绝对可以毫无问题地分离数据库特定和通用操作。它完全避免了Inner Platform Effect。 (例如,考虑Oracle序列和SQL Server身份字段。这对LLBLGen Pro来说不是问题。)
LLBLGen Pro是一个非常广泛的代码生成器。它将数据库中的对象映射到数据库访问层,作为可以轻松添加到解决方案中的项目。这有一个非常好的优点,不能在第一眼看到:如果存储过程甚至字段更改/删除,您将在编译时注意到错误,而不是运行时。因此,如果您已经有一个正在运行的数据库,请使用LLBLGen Pro。
如果您是拖放式人员并且可以轻松绑定数据,也可以将其数据源组件添加到Visual Studio中。有些人发现它对ASP.NET项目很有用。
更重要的一点是:类型化列表:这些列表非常有用,无需更改数据库中的任何代码即可创建数据源。因此,如果您有一些显示数据的网格,您可以提供数据而无需接触数据库,这在关键环境中变得非常安全。
所以,我建议使用LLBLGen Pro,即使N / Hibernate有更多用户。
答案 9 :(得分:0)
对于我使用Sooda的小型项目,但那是大约一年前的事。现在只有NHibernate。