O / RM选择(不依赖于linq)

时间:2009-09-18 11:00:45

标签: .net sql-server tsql orm

我喜欢使用SQL,我觉得我很好。

我尝试使用Linq(使用c#和Linq2Sql,看起来感觉与VB.Net更像SQL),我觉得非常令人沮丧, 您无法在不编译和执行代码的情况下运行查询。我对IQueryable,IEnumarable,IList等不太满意。我怀疑为什么在你是专业SQL用户时会使用Linq。

但是我需要某种O / RM,所以我可以编写我的测试代码,我喜欢使用POCO而不是数据集。

因此,考虑到我的团队中的每个人都是某种程度的SQL专家(主要是MS SQL,因此也是T-SQL),并享受数据库编程,您建议使用O / RM。 (商业或OpenSource并不重要,良好的支持,教程和文档是必须的)

我们的开发环境将是C#,ASP.Net MVC以及ExtJS。

我们要迁移的应用程序上有1000多个表。您不会相信ADO.Net Entity Framework会在其上生成多少代码。我也尝试了一下Castle ActiveRecord,(我对H(N)Hibernate一无所知,并且没有足够的ActiveRecord文档让我继续前进)

6 个答案:

答案 0 :(得分:5)

不是真正的答案,但在将LINQ作为查询语言解除之前尝试LINQPad一周^^

  

规则很简单:

     
      
  • 在“开始”菜单上找到SQL Management Studio的快捷方式   把它移到其他地方。
  •   
  • 取而代之的是插入LINQPad的快捷方式。
  •   
  • 下周,仅使用LINQPad执行所有临时SQL查询。
  •   

答案 1 :(得分:3)

最好的ORM支持Linq,因此无论如何都不会成为问题。 LinqPad肯定会帮助你提升学习曲线。 Linq具有显着的优势,所以你真的应该试着离开你的T-SQL舒适区并接受它。

有1000个表,我肯定会远离LinqToSql和EntityFramework,它们只是无法有效扩展。如果可能的话,你也会想要一些代码生成良好的东西。

NHibernate有代码生成选项,但它们通常要么缺乏,要么从我看到的商业广告。可能有一些很棒的免费产品,我还没有找到它。我不知道Castle ActiveRecord是否正是您想要的,但它绝对是一种入门方式,您可以随时转换到NHibernate之上的其他模式。

我不知道SubSonic有足够的功能来支持在1000个表数据库上编写的大型应用程序,但它可能非常合适。

LLBLGen Pro是一种我认为最符合您需求的商业产品。

关于选择.NET ORM,还有很多关于SO和其他地方的讨论:

NHibernate, Entity Framework, active records or linq2sql

答案 2 :(得分:1)

但我需要某种O / RM,所以我可以编写测试代码,我喜欢使用POCO而不是数据集。

然后我强烈建议SubSonic [好像否则我不会:)。

答案 3 :(得分:0)

看一下iBatis,我的理解是它围绕SQL的层比大多数OR / M解决方案要薄得多。

答案 4 :(得分:0)

以下是工具列表:OR Mapping

答案 5 :(得分:0)

在我的Java时代,我使用了Hibernate,而且几年前转向C#,我一直在使用nHibernate。与iBatis一样,它是来自Java ORM的端口,因此可以从双方开发的功能中获益。文档也很好。你甚至可以找到一些书。