【问题标题】:O/RM Choice (not reliant on linq)O/RM 选择(不依赖于 linq)
【发布时间】:2009-09-18 11:00:45
【问题描述】:

我喜欢使用 SQL,我觉得我很擅长。

而且我试过用Linq(用c#和Linq2Sql,感觉用VB.Net感觉更像SQL),感觉很郁闷, 您不能只运行查询而不编译和执行代码。我不太擅长 IQueryable、IEnumarable、IList 等。我怀疑你是专业 SQL 用户时为什么要使用 Linq。

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

因此,考虑到我团队中的每个人也是某种程度的 SQL 专家(主要是 MS SQL,因此是 T-SQL),并且喜欢数据库编程,因此您会推荐 O/RM。 (商业或开源无所谓,良好的支持、教程和文档是必须的)

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

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

【问题讨论】:

    标签: .net sql-server tsql orm


    【解决方案1】:

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

    规则很简单:

    • 在“开始”菜单上找到 SQL Management Studio 的快捷方式 并将其移至其他位置。
    • 在其位置插入 LINQPad 的快捷方式。
    • 下周,仅使用 LINQPad 执行所有即席 SQL 查询。

    【讨论】:

      【解决方案2】:

      最好的 ORM 支持 Linq,因此无论哪种方式都不是问题。 LinqPad 肯定会帮助您提高学习曲线。 Linq 具有显着的优势,因此您真的应该尝试离开您的 T-SQL 舒适区并拥抱它。

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

      NHibernate 有一些代码生成选项,但据我所见,它们通常要么缺乏,要么商业化。那里可能有一些很棒的免费产品,但我还没有找到。我不知道 Castle ActiveRecord 是否正是您想要的,但这绝对是一种入门方式,您以后可以随时过渡到 NHibernate 之上的其他模式。

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

      LLBLGen Pro 是一款我认为最能满足您需求的商业产品。

      关于 SO 和其他关于选择 .NET ORM 的讨论很多:

      NHibernate, Entity Framework, active records or linq2sql

      【讨论】:

      • 迈克尔,你为什么要推广 SubSonic? :) 恕我直言,它与几乎所有其他支持 LINQ 的现代 ORM 相比无与伦比
      • Alex,我没有像我相信的那样与 SubSonic 直接竞争的产品。除了您之外,似乎有很多人对 SubSonic 的 Linq 支持非常满意。你的名声在你之前。我很高兴看到有关 SubSonic 的 Linq 支持与您、您的公司或您的网站零联系的批评。
      【解决方案3】:

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

      那么我强烈建议SubSonic [好像否则我不会:)]。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          这里是工具列表:OR Mapping

          【讨论】:

            【解决方案6】:

            在我的 Java 时代,我使用 Hibernate,自从几年前转向 C# 以来,我一直在使用 nHibernate。与 iBatis 一样,它是 Java ORM 的移植,因此可以从双方开发的特性中受益。文档也很不错。你甚至可以在那里找到几本书。

            【讨论】:

              猜你喜欢
              • 2016-10-30
              • 2022-08-18
              • 2020-10-09
              • 2021-04-09
              • 2012-04-01
              • 2014-10-31
              • 1970-01-01
              • 2013-05-21
              相关资源
              最近更新 更多