最近我一直在研究可用的基于.NET的ORM。我注意到每个人都会在一两个阵营中选址。在一个阵营中,首先创建数据库,ORM提供了一种更简单的方法来访问应用程序中的数据库。在第二个阵营中,对象模型首先存在,ORM有助于将对象模型保存在数据库中。
现在我不是要求或断言一个阵营是否比另一个更好。我当然可以看到每种设计方法的原因。令我感到沮丧的是,我最近阅读的所有教程和“入门”文档都没有出现并且在开头说“这个工具假设您从现有的数据库/对象模型开始”。对我来说,这对于你是否会使用一个ORM而不是另一个来说非常重要。
所以在做了一堆阅读并创建了几个“Hello World”项目之后,我已经在我所研究的ORM支持的工作流程上整理了一系列要点。任何有这些工具经验的人都可以告诉我,我是否做了任何不正确的陈述,或完全错过了任何非常重要的观点。具体来说,我真的想知道我对数据库模式或对象模型是否应该首先使用每个工具的假设都是正确的。
repo.Add<MyClass>(instance);
<classname>.hbm.xml
答案 0 :(得分:2)
继续提出实体框架的评论:
Entity Framework (wikipedia also has some nicely structured information)
还有我没有使用过的LLBLGen,但是根据我的一位同事的评论,它并没有表现得那么好。
我之前使用过NHibernate,虽然简单,但印象还是不错的;虽然当时它还没有现在那么成熟,但它仍然是一个非常好的图书馆。不确定我现在是否必须在NH和EF之间做出选择......我想我会选择EF,因为这是我过去一年左右一直在使用的东西,开发速度会更快(仅限我),但功能-wise NH可能稍好一些。
答案 1 :(得分:1)
老实说,任何半正式的ORM都可以同时处理数据库和代码优先设计。
您的问题中包含的所有ORM(包括EF 4和LLBLGen Pro 3)都可以做到,但可能存在不同程度的疼痛。例如,首先为LinqToSql执行代码实际上不是它打算做的,但我相信有一些开源项目,其中该功能被“拴在一起”。也就是说,基本上没有理由推荐LinqToSql,因为微软正在推动所有人转向实体框架。
目前,NHibernate可能拥有最好的整体代码第一个故事。由于他们都非常支持ORM,因此很难就ORM拥有最佳整体数据库第一个故事发表意见,并且特定用例并不是您应该根据自己的决定做出的。
根据它是否是一个好的ORM选择一个ORM。好的ORM首先支持数据库,并且首先支持代码。
答案 2 :(得分:1)