65.9K
CodeProject 正在变化。 阅读更多。
Home

Entity Framework 基础

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (19投票s)

2014 年 8 月 21 日

CPOL

6分钟阅读

viewsIcon

45575

Entity Framework 基础

Entity Framework 何时发布?

Entity Framework 3.5 的第一个版本随 Visual Studio 2008 SP1 和 .NET 3.5 SP1 一起发布。
第二个版本(也是当前版本)的 Entity Framework,即 4.0 版本,随 VS 2010 和 .NET 4.0 一起发布。

在 Entity Framework 3.5 发布之前,有许多数据库访问技术,如 DAO(数据访问对象)、RDO(远程数据对象),然后是 ADO(ActiveX 数据对象),最后是 ADO.NET。

尽管使用 DataSetDataReader 的 ADO.NET 满足了我们的数据访问需求,但开发人员需要花费大量时间关注架构细节,努力跟上数据库架构的变化,并在与数据库交互时一遍又一遍地执行重复性任务。

图片来源:http://www.entityframeworktutorial.net/EntityFramework5/entity-framework5-introduction.aspx

什么是 Entity Framework?

  1. ADO.NET Entity Framework (EF) 是一个对象/关系映射 (ORM) 框架,它是 ADO.NET 中的一组技术,用于开发与数据交互的应用程序。
  2. ADO.NET 开发人员花费大量时间跟上数据库的变化,而 EF 提供了从关系数据库架构到对象的映射,并提供了 ADO.NET 的抽象。
  3. 因此,使用 EF,您可以定义独立于数据库结构的实体类,然后将它们映射到数据库的表和关联。
  4. 由于我们现在处理的是具有自身架构的实体,因此我们屏蔽了数据库的变化。对象上下文会跟踪已更改的实体。
  5. 简而言之,使用 Entity Framework,您是在概念层面进行架构、设计和开发。您不再担心与数据库通信的“具体细节”,并且可以毫不费力地在不同的关系数据库之间切换。
  6. Entity Framework 的 ORM 实现提供了许多其他服务,如更改跟踪、标识解析、延迟加载和查询转换,以便开发人员可以专注于其应用程序特定的业务逻辑,而不是数据访问基础。
    要查看有关更改跟踪、标识解析、延迟加载和查询转换的更多详细信息,请访问以下链接:http://www.develop.com/entityframework4
  7. 它基本上根据数据库表生成实体,并提供执行基本创建、更新、读取、删除操作的功能,并且在管理一对一、一对多或多对多关系方面也发挥着重要作用。

现在 ADO.NET 的作用是什么?

  • 我们不能说 EF 的发布是为了取代 ADO.NET。
  • 实际上,我们可以说 EF 是对 ADO.NET 的增强,它消除了应用程序和数据库之间的差距。
  • 事实上,在后台,EF 使用 ADO.NET 类,但细节对您是抽象的。
  • EF 提供了从面向数据库(DataReaderDataSet)到面向模型开发的转变。
  • 因此,开发人员不再关注数据库,而是关注代表应用程序业务模型的实体。

EF 是 ADO.NET 的替代品吗?

答案是“是,也不是”。
是的,因为开发人员在执行数据操作时不会编写 ADO.NET 方法和类,并且
不是,因为这个模型实际上是建立在 ADO.NET 之上的,这意味着在这个框架下,我们仍然在使用 ADO.NET。

EF 的详细文件夹/文件结构?

EF 中主要有 3 个文件

  • CSDL - 概念架构定义语言
  • SSDL - 存储架构定义语言
  • MSL - 映射规范语言

这些是基于 XML 的语言,分别描述概念模型、存储模型以及这些模型之间的映射。

在 Entity Framework 应用程序中,模型和映射元数据从具有 .csdl.ssdl.msl 扩展名的三个文件中加载。

何时生成它们?

Entity Data Model Designer (Entity Designer) 在设计时将模型和映射信息存储在 .edmx 文件中。在生成时,Entity Designer 使用 .edmx 文件中的信息创建 Entity Framework 在运行时所需的 .csdl.ssdl.msl 文件。

它们位于何处?

默认情况下,这些文件包含在输出到 bin 文件夹下的二进制文件中。
我们看不到这些物理文件。
但我们也可以将 CSDL、SSDL 和 MSL 文件输出为单独的文件。

在项目中创建 .edmx 主要有三种方法

  1. 数据库优先方法
  2. 模型优先方法
  3. 代码优先方法

我将在本文中讲解数据库优先方法。

如何在解决方案中添加 Entity Framework(.edmx) 文件

  1. 选择项目。右键单击项目。选择“添加新项”。

  2. .edmx 项目命名。
  3. 选择“从数据库生成模型”。由于我们遵循数据库优先方法,因此数据库已创建,我们将从数据库生成模型。

  4. 选择要从中创建模型的数据库连接。
  5. 为将在 web.config 中使用的实体连接字符串命名。

  6. 单击“下一步”,然后选择要导入到模型中的表、存储过程或视图。

  7. 单击“完成”,您的 Entity Framework 模型将已创建。

如何查看模型浏览器

  1. 右键单击模型,然后选择“模型浏览器”。

  2. 您将能够看到模型浏览器部分。

  3. 如果更改了数据库中的存储过程,则需要更新模型,以便数据库中的存储过程能够反映在模型中。

  4. 如果您想包含数据库中已更改的存储过程或表 -> 选择“刷新”并选择已更改的存储过程。
  5. 如果您想在模型中添加新添加的存储过程、表或视图 -> 选择“添加”选项卡并选择相应的实体。
  6. 如果您想从模型中删除实体 -> 选择“删除”选项卡并选择相应的实体。

如何添加函数导入

  1. EntityContainer 中,右键单击“函数导入”,然后选择“添加函数导入”。

  2. 键入所需的函数导入名称。

  3. 从下拉列表中选择存储过程名称。

  4. 您需要决定创建的函数导入的返回类型。为了决定返回类型,您必须单击“获取列信息”。
  5. 这将显示该特定存储过程返回的列列表。
  6. 在这里,如果存储过程返回多个列,则需要创建复杂类型,因此单击“创建新复杂类型”。
  7. 为复杂类型指定适当的名称,因为它将用作创建的函数导入的返回类型。

因此,我们的模型已与所需的数据库一起创建。我们还创建了一个函数导入。此函数导入将在数据访问层中用于访问数据。

我将在后续文章中讲解其余方法。
欢迎提供评论和建议。

© . All rights reserved.