Entity Framework 基础






4.89/5 (19投票s)
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。
尽管使用 DataSet
和 DataReader
的 ADO.NET 满足了我们的数据访问需求,但开发人员需要花费大量时间关注架构细节,努力跟上数据库架构的变化,并在与数据库交互时一遍又一遍地执行重复性任务。
图片来源:http://www.entityframeworktutorial.net/EntityFramework5/entity-framework5-introduction.aspx。
什么是 Entity Framework?
- ADO.NET Entity Framework (EF) 是一个对象/关系映射 (ORM) 框架,它是 ADO.NET 中的一组技术,用于开发与数据交互的应用程序。
- ADO.NET 开发人员花费大量时间跟上数据库的变化,而 EF 提供了从关系数据库架构到对象的映射,并提供了 ADO.NET 的抽象。
- 因此,使用 EF,您可以定义独立于数据库结构的实体类,然后将它们映射到数据库的表和关联。
- 由于我们现在处理的是具有自身架构的实体,因此我们屏蔽了数据库的变化。对象上下文会跟踪已更改的实体。
- 简而言之,使用 Entity Framework,您是在概念层面进行架构、设计和开发。您不再担心与数据库通信的“具体细节”,并且可以毫不费力地在不同的关系数据库之间切换。
- Entity Framework 的 ORM 实现提供了许多其他服务,如更改跟踪、标识解析、延迟加载和查询转换,以便开发人员可以专注于其应用程序特定的业务逻辑,而不是数据访问基础。
要查看有关更改跟踪、标识解析、延迟加载和查询转换的更多详细信息,请访问以下链接:http://www.develop.com/entityframework4。 - 它基本上根据数据库表生成实体,并提供执行基本创建、更新、读取、删除操作的功能,并且在管理一对一、一对多或多对多关系方面也发挥着重要作用。
现在 ADO.NET 的作用是什么?
- 我们不能说 EF 的发布是为了取代 ADO.NET。
- 实际上,我们可以说 EF 是对 ADO.NET 的增强,它消除了应用程序和数据库之间的差距。
- 事实上,在后台,EF 使用 ADO.NET 类,但细节对您是抽象的。
- EF 提供了从面向数据库(
DataReader
、DataSet
)到面向模型开发的转变。 - 因此,开发人员不再关注数据库,而是关注代表应用程序业务模型的实体。
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 主要有三种方法
- 数据库优先方法
- 模型优先方法
- 代码优先方法
我将在本文中讲解数据库优先方法。
如何在解决方案中添加 Entity Framework(.edmx) 文件
- 选择项目。右键单击项目。选择“添加新项”。
- 为 .edmx 项目命名。
- 选择“从数据库生成模型”。由于我们遵循数据库优先方法,因此数据库已创建,我们将从数据库生成模型。
- 选择要从中创建模型的数据库连接。
- 为将在 web.config 中使用的实体连接字符串命名。
- 单击“下一步”,然后选择要导入到模型中的表、存储过程或视图。
- 单击“完成”,您的 Entity Framework 模型将已创建。
如何查看模型浏览器
- 右键单击模型,然后选择“模型浏览器”。
- 您将能够看到模型浏览器部分。
- 如果更改了数据库中的存储过程,则需要更新模型,以便数据库中的存储过程能够反映在模型中。
- 如果您想包含数据库中已更改的存储过程或表 -> 选择“刷新”并选择已更改的存储过程。
- 如果您想在模型中添加新添加的存储过程、表或视图 -> 选择“添加”选项卡并选择相应的实体。
- 如果您想从模型中删除实体 -> 选择“删除”选项卡并选择相应的实体。
如何添加函数导入
- 在
EntityContainer
中,右键单击“函数导入”,然后选择“添加函数导入”。 - 键入所需的函数导入名称。
- 从下拉列表中选择存储过程名称。
- 您需要决定创建的函数导入的返回类型。为了决定返回类型,您必须单击“获取列信息”。
- 这将显示该特定存储过程返回的列列表。
- 在这里,如果存储过程返回多个列,则需要创建复杂类型,因此单击“创建新复杂类型”。
- 为复杂类型指定适当的名称,因为它将用作创建的函数导入的返回类型。
因此,我们的模型已与所需的数据库一起创建。我们还创建了一个函数导入。此函数导入将在数据访问层中用于访问数据。
我将在后续文章中讲解其余方法。
欢迎提供评论和建议。