企业库与 Entity Framework 之间的关系 - ADO.NET 技术的 MS 产品

Relationship between Enterprise Library and Entity Framework - MS offerings of ADO.NET technologies

我正在阅读 this 一本关于 Entity framework (EF) 的非常有趣的书,这是 Microsoft 提供的对象关系映射器 (ORM)。出于好奇,我开始回溯 Microsoft 用于连接 SQL 服务器数据库的所有产品。 Microsoft 使用其专有的 ADO.NET 数据提供程序技术在其所有产品中连接到数据库。

大约十年前,我曾在我的项目中使用 Microsoft 应用程序块来连接到 SQL 服务器数据库。为了使用它,我曾经直接在我的项目中引用 MS 应用程序块 DLL。从那时起,也出现了很多其他事情。 Objective 所有这些都是相同的 - 减少开发人员为执行数据库操作而编写的重复代码。每次从头开始一个新项目时,这个问题都会更加突出。

因此,我开始研究每当我从头开始一个新项目时可用的所有选项。这些产品如何相互叠加?它们是相同的还是逐渐增强了相同年龄的 ADO.NET 技术,而 EF 是最新的产品?以下是我尝试探索的选项:

  1. 手动使用 System.Data.SqlClient 命名空间中可用的各种 ADO.NET 类(参考 System.Data.dll - 自 .NET Framework 1.x 起可用)
  2. 在您的项目中引用 Microsoft.ApplicationBlocks.Data.dll 程序集并执行数据库查询。
  3. Microsoft 模式和实践团队的企业库。
  4. LINQ to SQL(随 .NET v3.5 一起发布)
  5. Entity Framework(随 .NET v3.5 Service Pack 1 发布)

一旦您进入 ADO.NET 世界,所有这些选项可能会让人感到困惑。如果有人可以鸟瞰这些产品,将会很有帮助。

副手 - 你应该注销 Microsoft.ApplicationBlocks.Data 和 Enterprise Library。

LINQ to SQL 支持 Microsoft SQL Server 中可用的数据库表、视图、存储过程和函数的 1 对 1 映射。它适用于 RAD(快速应用程序开发)场景。我相信 MS 仍然支持它,但我不认为他们正在积极开发它。我没有使用过它,也没有看到它用于我多年从事的任何项目。

正如您提到的,Entity Framework 是一个 ORM,它比 LINQ to SQL 强大得多。下面SOpost有很多区别的资料

要考虑的另一个选项是 Dapper. Dapper is a micro-orm and very fast. Here is some good analysis of Dapper vs. ADO.NET in this SO post: Why should one use Dapper ? Also can anyone comment on Dapper Vs ADO.NET Pros and Cons

就个人而言,我在构建应用程序时使用 Entity Framework 或 Dapper。如果它是一个具有复杂映射要求的非常大的应用程序——那么我通常会选择 Entity Framework。否则,我坚持使用 Dapper。

如果我正在构建不需要任何类型映射的服务或实用程序,我可能会直接使用 ADO.NET。

读这个EntityFramework VS pure Ado.Net