关于选择合适的ORM的困惑?

时间:2012-01-28 08:01:18

标签: c# asp.net entity-framework nhibernate linq-to-sql

我将ASP.NET与informix数据库一起使用。

我使用一组编写的类来处理连接,CRUD操作,事务等....

现在,我觉得这些课程不是最佳选择,性能较差,花费大量时间并且有许多缺点。


我想使用ORM,但我不知道如何选择适合我的Web应用程序的那个(ASP.NET,Informix)。

请帮助选择方便的ORM。

我对nHibernate,Entity Framework,LINQ To SQL和Open Access(Telerik组件)感到困惑。

注意:我将使用Visual Studio 2012,所以我想要最近的比较。

6 个答案:

答案 0 :(得分:10)

我真的建议使用Entity Framework,因为它是.NET的原生框架。 Here声明Informix提供程序可用于EF。

答案 1 :(得分:5)

http://www.ibm.com/developerworks/data/library/techarticle/dm-0903linqentity/

上面的链接将为您提供下载informix提供程序的链接,并带您逐步将informix提供程序与Entity Framework结合使用。

有关实体框架的更多信息 http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx

简单地说,一旦完成此设置,您将能够创建映射到informix数据结构的类并使用linq执行查询。 EF是一个非常强大和有用的工具,我推荐它。

答案 2 :(得分:5)

您是否考虑过使用Fluent NHibernate?网上有大量的文章,而且很多!这是一篇这样的文章:converting to Fluent NHibernate sessionmanager

编辑:

一直在考虑你的情况,我会告诉你我通常的想法。首先,我会想到我希望我的网关层确实是什么(这是我用来与持久性媒体交谈的层)。现在,大多数人会说,我希望它与数据库交谈,或者我想插入和更新内容。但最近,我发现这还不够!在考虑到这些问题的编码网关层的过程中,我突然意识到我想做一些有点不同的事情,并且热潮,我不能很容易地使用NHibernate。因此,我做了一些让步并使用Linq-ToSql,因为它支持对NHibernate的一些细节的更高优先级要求。

现在,我的故事的原因是:NHibernate提供了一些很棒的小功能,如结果转换。我可以在我的Db上看到大量已连接的表格,为每个字段提供一个别名,并且有一个可爱的结果变换器,爆炸,它立即转换为我的DTO。现在,不要误解我的意思,Linq-To-Sql与自动生成的类有类似的东西。但我不希望这些可见的网关层外(另一个对话)。同样,Linq-To-Sql轻松处理事务 - 我认为NHibernate没有这么做!

所以,这一切归结为:我的网关/存储库层中的EXACT要求是什么?哪些技术与我的持久性媒体兼容?!现在,我可以考虑一下我想要使用的技术。

我意识到我本可能没有回答你的问题,但我希望它给你一些思考的东西!

快乐的编码, 干杯,
克里斯。

答案 3 :(得分:3)

我的投票是使用Fluent NHibernate - 您可以获得Hibernate的可配置性和跨平台使用,但您可以避免使用大量XML配置文件的必要性。实体框架很好,但我不喜欢过多依赖IDE / Designer支持的工具。

快乐编码,

梅尔

答案 4 :(得分:2)

我推荐Fluent NHibernate。就个人而言,我认为它比其他任何ORM框架更多地用于公司。

我已经使用了Entity Framework,它既有设计优先,又有严重的锁定缺点,而且代码优先,这没关系。

当有人提出几乎相同的问题时,我发布了an answer on Code Review

答案 5 :(得分:1)