【问题标题】:Dump Linq-To-Sql now that Entity Framework 4.0 has been released?既然 Entity Framework 4.0 已经发布,就转储 Linq-To-Sql?
【发布时间】:2011-02-11 17:12:43
【问题描述】:

Linq-To-Sql 的相对简单性以及针对 Entity Framework 版本 1 的所有批评(尤其是 the vote of no confidence)说服我“暂时”使用 Linq-To-Sql。现在 EF 4.0 已经发布,我想知道是否是时候开始迁移到它了。

问题:

  1. EF 4.0 相对于 Linq-To-Sql 的优缺点是什么?
  2. EF 4.0 终于准备好迎接黄金时段了吗?
  3. 现在是转换的时候了吗?

【问题讨论】:

  • 为什么它必须是这两者之一?为什么不使用 NHibernate、Subsonic 等?
  • @mgroves,我关注的是 .NET 框架中内置的技术,但你说得对,肯定还有其他技术可能同样好,甚至更好。
  • 我喜欢 Microsoft 将其 ORM 包与 IDE 集成的方式。开源项目往往也不这样做。

标签: linq-to-sql entity-framework orm entity-framework-4


【解决方案1】:

好吧,一场无休止的辩论:-)

是的,我坚信 EF4 已经为黄金时间做好了准备 - 微软在解决 EF 1.0 版本中几乎所有的烦恼和问题方面做得非常出色。

它已准备好迎接黄金时段 - 如果您需要它的所有功能。

Linq-to-SQL 是一个非常简单、简洁、简洁的 OR 映射器 - 它将一个数据库表映射到一个 CLR 对象 - 仅此而已。非常基本,非常直接 - 但在 SQL Server 之上是一个相当薄的层。

另一方面,EF4 更多

  • 对象空间中的概念数据模型
  • 数据库层上的存储数据模型
  • 两者之间的映射层
  • 独立于数据库

因此,如果您确实需要支持多个数据库(而不仅仅是 SQL Server),或者如果您确实需要能够将数据库结构转变为完全不同的对象模型 - EF4 是一个很好的起点。

如果您有一个简单直接的中小型应用程序,只需要能够轻松快速地将表 1:1 映射到对象,那么我认为 EF4 在简单性和性能方面甚至不相上下到 Linq-to-SQL。

EF4 很棒 - 如果您需要它的强大功能 - 那就去吧!

但是,如果您的要求要少得多,那可能只是矫枉过正 - 继续使用 Linq-to-SQL(我会)并对此感到满意。我看不出有什么充分的理由放弃 Linq-to-SQL - 它在 .NET 4 中仍然完全可用,甚至有幸获得了一些 bug fixes and improvements,而且它至少还会存在几年。

【讨论】:

  • 谢谢,马克,+1。我通常使用您概述的更简单的场景,所以您的回答让我相信我应该坚持使用 Linq-To-Sql,除非/直到我有更复杂的要求。
  • 当您说多个数据库时,您只是在谈论它可以执行 mysql,还是您在谈论是否需要在一个 EF 中连接不同类型的数据库?还有为什么它被称为 EF4 而不是 EF2.0 似乎是一个非常愚蠢的命名约定。最后,我明白了您选择更简单的东西的观点,但是使用 EF 会不会更安全,因为需求总是在变化,您今天可能不需要高级功能,但是 2 年后您可能需要它然后不得不切换整个数据库层?
  • @chobo2:我的意思是 EF4 可以支持多个数据库 - 您可以连接到 SQL Server、IBM DB2、MySQL 等等。如果你想一次使用它们,你当然需要有多个 ObjectContext——你不能在一个 ObjectContext 中混合多个数据库。它之所以称为 EF4,是因为它是在 .NET 4 时间范围内发布的——但这只是市场营销的说法。是的,现在使用 EF4 可能“更安全” - 但我只是说,就目前而言,在许多情况下,EF4 将是一种矫枉过正的做法,会在性能方面伤害您,并由于其复杂性而引起更多的麻烦
  • 我们已经发布了针对 Oracle、MySQL、PostgreSQL 和 SQLite 的 EF v4 提供程序的实现。我们还实施了一个新产品 - LinqConnect - 将我们的 LINQ to SQL 实施集成到 Oracle、MySQL、PostgreSQL 和 SQLite。因此,需要明确的是 - 在 LINQ to SQL 开发的情况下,您不仅限于 SQL Server。
【解决方案2】:

@marc_s,@DanM:

请不要将此帖子视为广告:) 我们只是想知道 Linq to Sql 高级用户的意见。

我们在LinqConnect(Linq to Sql Server、Oracle、MySql、PostgreSql、SQLite)中实现了以下改进:

- Complex Type  
- Many to Many  
- Batch update operations  
- Recursive support in DataLoad options  
- Query level preload (like Include in EF)  
- TPT support (in LinqConnect 2.0)  

我们还计划增加对二级缓存的支持。

这些改进对您有价值吗?

【讨论】:

  • “请不要认为这是广告,但这是我们产品的广告……”不错的尝试。
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 2015-12-12
相关资源
最近更新 更多