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

MVC 和 Entity Framework Code First、Code Migration 方法

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (6投票s)

2015年9月28日

CPOL

7分钟阅读

viewsIcon

22133

学习并使用 MVC 和 Entity Framework Code First、Code Migration 方法构建 Web 应用程序。

学习并使用 MVC 和 Entity Framework Code First、Code Migration 方法构建 Web 应用程序

https://www.youtube.com/watch?v=GanjklfebEc&index=1&list=PLdmgFSerzv2Kl00tz0qY-jxDPnPowpRaT

使用示例演示应用程序学习 MVC 和 Entity Framework Code First、Code Migration 方法

https://www.youtube.com/watch?v=OhJtxRvgeK0&list=PLdmgFSerzv2Lhj5dFrD75sz26qGdxpo8Z

实体框架

https://www.youtube.com/watch?v=e_LfhNHJuqs

  • Entity Framework 是一个对象关系映射 (ORM) 框架,它使开发人员能够将关系数据作为域特定对象进行处理,从而消除了开发人员通常需要编写的大部分数据访问样板代码。
  • Entity Framework 是 ADO.net 的增强功能,为开发人员提供了一个自动化的数据访问和存储机制。
  • 开发人员可以使用 LINQ 查询通过 Entity Framework 从数据库中获取数据。
  • Entity Framework 帮助我们以强类型对象的形式检索和操作数据。

Entity Framework 中的方法

  • 模型优先 (Model First): 首先使用 Visual Studio 中的 ORM 设计器工具创建数据库模型。一旦模型(包括实体和关系)设计完毕,物理数据库和类将在 Entity Framework 的帮助下从模型自动生成。
  • 数据库优先 (Data Base First): 首先创建数据库,或者我们可以使用现有数据库,然后将在 Entity Framework 的帮助下自动生成代码。
  • 代码优先 (Code First): 创建一组类,即代码优先,然后将在 Entity Framework 的帮助下自动生成数据库。

为什么选择 Entity Framework

  • 有两种模型或分组:
    • 逻辑或存储模型 – 处理表、主键、外键等,由一群称为“以数据库为中心”的人处理。
    • 概念或面向对象域模型 - 处理对象、属性、继承、多态性等,由一群称为“以应用程序为中心”的人处理。
  • 由于这两种模型存在阻抗不匹配,开发人员花费大量时间和精力编写数据访问样板代码,例如 ADO.net,用于映射并将其插入数据库。
  • ADO.NET Entity Framework 旨在通过在逻辑数据模型和应用程序域模型之间提供抽象层来解决此问题。

Entity Framework Code First Migration 方法

  • Code First 主要用于领域驱动设计 (DDD) 方法。我们可以专注于域设计,并根据域需求开始编写类。
  • Code First API 将根据您的实体类和配置即时创建数据库。
  • 在 Code First Entity Framework 4.2 或更早版本中,我们需要使用任何数据库初始化器方法,并在模型发生更改时处理数据的填充或维护。
  • 与早期版本相比,Code First Migration 方法非常方便,因为它能够跟踪更改并智能地处理模型更改,而无需考虑删除和重新创建数据。
  • Code First Migration 允许您使用 Visual Studio 中的程序包管理器控制台根据模型类创建新数据库或更新现有数据库。

使用 Code First Entity Framework 的优势

  • Entity Framework 使开发人员能够通过针对概念应用程序模型进行编程来创建数据访问应用程序,而不是针对关系数据存储架构进行编程。
  • 应用程序可以更灵活地处理面向应用程序的概念模型,包括继承、复杂成员和映射等类型。
  • Entity Framework 是一个 ORM 工具,提供简单的 API 来执行 CRUD 操作。
  • Entity Framework 还帮助我们从前端执行某些 DDL 和 DML 操作,而不是在后端手动执行。
  • Entity Framework 提供强类型类,从而提供
    • IntelliSense 支持,
    • 编译时和
    • 调试器选项
  • Entity Framework 会自动为您处理样板代码和映射。因此,我们开发人员无需编写大部分数据访问样板代码,即通常需要的(例如 ADO.NET)。
  • 大大节省了时间,并帮助我们快速开发应用程序,从而将更多精力集中在业务细节上。

MVC 和 Entity Framework Code First、Code Migration 方法

创建项目并启用 Entity Framework Code First Migration 方法

视频:https://www.youtube.com/watch?v=jAyDCUi9H4g

  • 创建一个新的 MVC 4 Web 应用程序。
  • 为应用程序命名并单击“确定”。

  • 选择所需的模板和视图引擎。

  • 转到“工具”->“程序包管理器”->“程序包管理器控制台”。
  • 在程序包管理器控制台中执行命令以安装 entity framework 5。
    • install-package entityFramework -version 5.0.0.0

  • 为 DBContext 创建一个新类,该类充当数据库和 LINQ 对象之间的桥梁或连接对象。
  • DBContext 在应用程序层和数据库层之间提供了一个抽象层。
  • DBSet 将代表数据库中存在的表。

  • 打开 web.Config 文件并提供所需的 ConnectionString。
  • ContextName 应与我们之前创建的名称相同。
  • 还提供正确的数据源、Initial catalog 和 provider name 等连接字符串详细信息。

  • 转到程序包管理器控制台。
  • 通过执行命令为使用 Code First Code Migrations 方法启用迁移。
    • Enable-Migrations -ContextTypeName DNSContext
  • Code-First Migrations 将负责数据。因此,我们无需编写 Entity Framework 旧版本中使用的 DropCreateDatabase 方法。

  • 启用特定上下文的迁移后,我们需要添加迁移。
  • Add Migration 将生成迁移文件和 SQL 代码,并且除非运行“update-database”命令,否则不会在 SQL Server 中执行。

  • 已生成 Code Migration 文件。

  • “update-database”命令将通过运行代码迁移文件中存在的代码来填充数据库。
  • 由于是第一次运行,将在数据库中创建一个新数据库,其名称在 Initial catalog 的连接字符串中提供。

  • 在文件中创建一个新的 Course Model,包含所需的实体。

  • 在 Context 类中添加一个 DbSet 属性。
  • Add-Migration 并更新数据库。

使用脚手架模板创建 CRUD 操作。

视频:https://www.youtube.com/watch?v=hwFzUYvbHFo

  • 添加一个 Course Controller。
  • 选择脚手架模板“使用 Entity Framework 的带读写操作和视图的 MVC 控制器”。
  • 选择 Data Context 类。
  • 将使用脚手架模板和 Entity Framework 方法创建 Course Controller 中的 CRUD 操作以及相应的视图。

  • 在导航栏中为 Course 添加一个 ActionLink。

在 MVC 中创建下拉列表。

https://www.youtube.com/watch?v=SPND6UuGjQc

  • 让我们将下拉列表添加到域实体中,并将值硬编码在视图中。

  • Course 屏幕(之后)

  • 如果您希望将硬编码的值从控制器中获取。

  • 在视图中提供 ViewBag。

为 Student 屏幕创建一个模型,并使用 Code Migration 更新数据库。

视频:https://www.youtube.com/watch?v=5AkoXZVSw-g

  • 为 Student 页面创建一个新模型。

  • 通过添加新的 Student 属性来更新 DBContext。

  • 现在添加一个新的迁移以在数据库中创建 Student 表。
  • 使用“Add-Migration”命令创建迁移文件。

  • 在程序包管理器控制台中,使用“Update-database”命令更新数据库。
  • 创建新的 Student 控制器,选择读写操作,然后添加控制器。

MVC 中的创建操作。

视频:https://www.youtube.com/watch?v=rGC7OcgkFV0

  • Student 控制器已创建。
  • 为 Create 屏幕添加一个视图。

  • 运行应用程序并转到“Student/Create”页面。

  • 创建一个 DNSContext 对象。
  • 创建一个 HttpPost 方法,用于将数据插入数据库。

MVC 中的读取操作。

视频:https://www.youtube.com/watch?v=7y8Cqcpktng

  • MVC 中的检索操作。
  • 添加一个视图以在视图中显示学生列表。

  • 修改索引页以在列表中显示所有数据。

MVC 中的更新操作。

视频:https://www.youtube.com/watch?v=KB6DnCIuO8U

  • MVC 中的编辑或更新操作。

  • MVC 中用于更新 Student 记录的 POST 操作。

  • 详细信息操作。

MVC 中的删除操作。

视频:https://www.youtube.com/watch?v=RBCzyHW-mhU

  • 删除操作方法。

  • 最终,Student 页面已创建,并且所有 CRUD 操作都已完成。

在 MVC 和 Entity Framework Code Migration 方法中配置一对多和多对多关系。

视频:https://www.youtube.com/watch?v=9qyRIW0FTZ8

在 MVC 和 Entity Framework Code Migration 方法中配置多对多关系。

视频:https://www.youtube.com/watch?v=nzmk1hrYYtQ

© . All rights reserved.