【问题标题】:Are there any major features missing from Linq-to-Sql?Linq-to-Sql 是否缺少任何主要功能?
【发布时间】:2009-01-14 02:14:08
【问题描述】:

Linq-to-Sql 缺少哪些主要功能?

  • 与其他主要 SQL 数据库引擎(MySQL 等)的兼容性
  • 映射多对多关系
  • 还有其他人吗?

我已经在 DAL Heart 开发了一个使用 Linq-to-Sql 的大型项目。我之前没有使用关系数据映射器进行开发,所以它是来自数据集的学习曲线。但是我没有发现任何使用 Linq-to-Sql 无法解决的重大问题。 我的测试得出结论,它比 Linq-to-Entities 快得多。

那么 Linq-to-Sql 缺少哪些主要功能呢?

我想我想问的是,Linq-to-Sql 的开发是否停止 - 有关系吗?

【问题讨论】:

标签: linq linq-to-sql


【解决方案1】:

Maybe the biggest thing missing is a future

我倾向于同意我链接到的这篇文章,MS 说 Linq to SQL 将持续开发,但他们的行动(或更具体地非行动)讲述了一个不同的故事。 MS 当然希望你赌的是 Linq to Entities。

【讨论】:

  • 我不同意。仅仅因为 MSFT 的营销机器告诉我们“x 已死,用 y 代替”并不能使它成为现实。如果他们能够使 EF/L2E 成熟到足以取代 L2S,也许会是这样,但在此之前,IMO 宣布它死亡还为时过早。 (就像说 Winforms 死了,每个人都应该急于使用 WPF,或者说 webforms 死了,每个人都应该使用 silverlight,或者说 Win32 和 COM 死了,每个人都应该改用 .net 都为时过早。)
  • @KristoferA:L2S 早就死了。只是早期采用者需要一段时间才能弄清楚。
  • LINQ-to-SQL 的精神存在于一个名为 IQToolkit 的项目中。如果您是 L2S 类型的人,请试一试 IQToolkit。
【解决方案2】:
  • 对急切加载的良好支持
  • 高级映射(即不是类和表之间的一对一映射)
  • 能够通过数据库更改刷新映射

【讨论】:

【解决方案3】:

首先,它没有死。虽然它在 4.0 中没有获得任何新功能,但他们已经修复了许多错误和怪癖,我相信他们会继续这样做。

查看 .net 4.0 的 Linq-to-SQL 更改列表:
http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40

IMO,他们没有触及太多核心可能是一件好事 - 它是可靠的、高效的,并且在大多数情况下会生成非常好的 SQL,因此任何大手术都会冒着破坏一些好东西的风险。设计器和运行时中缺少的一些部分可以用螺栓固定或解决。

另外,最初在 MSFT 编写 L2S 的人 Matt Warren 编写了一个“版本 2”,他已在他的博客和 codeplex.com 上以开源 (MS-PL) 的形式发布。他称其为 IQToolkit,但我想将其称为 L2Sv2... :)

查看:
http://blogs.msdn.com/mattwar/
http://www.codeplex.com/IQToolkit/

【讨论】:

    【解决方案4】:

    Linq to SQL 对多层架构的支持并不容易。

    Entity Framework 从一开始就是为支持分布式场景而设计的。虽然在 .Net 3.5 EF 中并不完全存在(至少以自动方式),但它为进一步改进奠定了基础。因此,在 .Net 4.0 中,EF 将 T4 模板添加到代码生成自我跟踪实体和 DTO。

    【讨论】:

      【解决方案5】:

      我最近一直在开发一个使用它的系统。我设计它所连接的数据库的同事也为它完成了一些 L2S 编码。他(不断)抱怨的两件事是:

      1/ 没有基于某些条件进行批量删除的方式。 L2S 最终将单独删除行,这是非常低效的。有许多博客讨论了解决此问题的各种解决方法。

      2/ 更新需要查询对象、更新对象然后提交更改的繁琐机制,即不需要初始查询。如果您知道一行的键,您应该能够直接更新它而无需事先查询。

      【讨论】:

        【解决方案6】:

        几个月来,我一直在大量使用 linq to sql。我发现的唯一问题是,在存储过程和以编程方式生成的结果的混合中添加谓词将尝试在计算编程结果之前将查询推送到 SQL。这很容易通过首先调用 .ToList() 来解决。

        我偶尔希望有一个 Linq to Entity 功能,但 linq to sql 完成了我想要的 95%。

        【讨论】:

          【解决方案7】:

          我不认为它已经死了。我认为它会得到解决,当前的问题可能会消失。但我不认为它会比现在更多。有关系吗?我个人认为不会。我认为这个框架很好。我发现 L2S 的两个主要问题是无法轻松分离实体和笨拙的更新机制。

          【讨论】:

            【解决方案8】:

            除非微软可以使实体框架在速度和简单性方面都比 linq to sql 更好,否则恕我直言。

            【讨论】:

              猜你喜欢
              • 2016-04-22
              • 1970-01-01
              • 1970-01-01
              • 2011-02-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-03
              相关资源
              最近更新 更多