- 实体框架教程
- 实体框架 - 主页
- 实体框架 - 概述
- 实体框架 - 架构
- 实体 F - 环境设置
- 实体框架 - 数据库设置
- 实体框架 - 数据模型
- 实体框架-DbContext
- 实体框架 - 类型
- 实体框架 - 关系
- 实体框架 - 生命周期
- 实体 F - 代码优先方法
- 实体 F - 模型优先方法
- 实体 F - 数据库优先方法
- 实体框架 - DEV 方法
- 实体F——数据库操作
- 实体框架 - 并发
- 实体框架 - 事务
- 实体框架 - 视图
- 实体框架 - 索引
- 实体 F - 存储过程
- 实体 F - 断开连接的实体
- 实体 F - 表值函数
- 实体框架 - 本机 SQL
- 实体框架 - 枚举支持
- 实体F - 异步查询
- 实体框架 - 持久性
- 实体 F - 投影查询
- 实体 F - 命令记录
- 实体F——命令拦截
- 实体框架 - 空间数据类型
- 实体框架 - 继承
- 实体框架 - 迁移
- 实体框架 - 预加载
- 实体框架 - 延迟加载
- 实体框架 - 显式加载
- 实体框架 - 验证
- 实体框架 - 跟踪更改
- 实体框架 - 彩色实体
- 实体 F - 代码优先方法
- 实体框架 - 第一个示例
- 实体框架 - 数据注释
- 实体框架 - 流畅的 API
- 实体框架-种子数据库
- 实体 F - 代码优先迁移
- 实体 F - 多个 DbContext
- 实体 F - 嵌套实体类型
- 实体框架资源
- 实体框架 - 快速指南
- 实体框架 - 有用的资源
- 实体框架 - 讨论
实体框架 - 模型优先方法
在本章中,让我们学习如何使用称为模型优先的工作流程在设计器中创建实体数据模型。
当您开始一个数据库甚至还不存在的新项目时,模型优先非常有用。
该模型存储在 EDMX 文件中,可以在实体框架设计器中查看和编辑。
在模型优先中,您在实体框架设计器中定义模型,然后生成 SQL,这将创建与您的模型匹配的数据库架构,然后执行 SQL 以在数据库中创建架构。
您在应用程序中与之交互的类是从 EDMX 文件自动生成的。
以下是使用模型优先方法创建新控制台项目的简单示例。
步骤 1 - 打开 Visual Studio 并选择文件 → 新建 → 项目
步骤 2 - 从左侧窗格中选择“已安装”→“模板”→“Visual C#”→“Windows”,然后在中间窗格中选择“控制台应用程序”。
步骤 3 - 在名称字段中输入 EFModelFirstDemo。
步骤 4 - 要创建模型,首先右键单击解决方案资源管理器中的控制台项目,然后选择添加→新项目...
将打开以下对话框。
步骤 5 - 从中间窗格中选择 ADO.NET 实体数据模型,然后在名称字段中输入名称 ModelFirstDemoDB。
步骤 6 - 单击“添加”按钮,这将启动“实体数据模型向导”对话框。
步骤 7 - 选择空 EF 设计器模型并单击下一步按钮。实体框架设计器将打开并显示一个空白模型。现在我们可以开始向模型添加实体、属性和关联。
步骤 8 - 右键单击设计图面并选择属性。在“属性”窗口中,将实体容器名称更改为 ModelFirstDemoDBContext。
步骤 9 - 右键单击设计图面并选择添加新→实体...
添加实体对话框将打开,如下图所示。
步骤 10 - 输入 Student 作为实体名称,输入 Student Id 作为属性名称,然后单击“确定”。
步骤 11 - 右键单击设计图面上的新实体,然后选择添加新→标量属性,输入名称作为属性的名称。
步骤 12 - 输入 FirstName,然后添加另外两个标量属性,例如 LastName 和 EnrollmentDate。
步骤 13 - 按照上述所有步骤添加另外两个实体课程和注册,并添加一些标量属性,如以下步骤所示。
步骤 14 - 我们在视觉设计器中有三个实体,让我们在它们之间添加一些关联或关系。
步骤 15 - 右键单击设计图面并选择添加新→关联...
步骤 16 - 使关系的一端指向具有一个重数的“学生”,另一端指向具有多个重数的“注册”。
步骤 17 - 这意味着一个学生有多个注册,并且注册属于一个学生。
步骤 18 - 确保选中“将外键属性添加到“发布”实体”框,然后单击“确定”。
步骤 19 - 同样,在课程和注册之间添加一个关联。
步骤 20 - 添加实体之间的关联后,您的数据模型将如下所示。
现在我们有了一个简单的模型,可以从中生成数据库并用于读取和写入数据。让我们继续生成数据库。
步骤 1 - 右键单击设计图面并选择从模型生成数据库...
步骤 2 - 您可以选择现有数据库或通过单击“新建连接”创建新连接...
步骤 3 - 要创建新数据库,请单击“新建连接...”
步骤 4 - 输入服务器名称和数据库名称。
步骤 5 - 单击“下一步”。
步骤 6 - 单击完成。这将在项目中添加 *.edmx.sql 文件。您可以通过打开 .sql 文件,然后右键单击并选择“执行”,在 Visual Studio 中执行 DDL 脚本。
步骤 7 - 将显示以下对话框以连接到数据库。
步骤 8 - 成功执行后,您将看到以下消息。
步骤 9 - 转到服务器资源管理器,您将看到数据库是使用指定的三个表创建的。
接下来,我们需要交换模型以生成使用 DbContext API 的代码。
步骤 1 - 右键单击 EF 设计器中模型的空白位置,然后选择添加代码生成项...
您将看到以下“添加新项目”对话框打开。
步骤 2 - 在中间窗格中选择 EF 6.x DbContext Generator,然后在“名称”字段中输入 ModelFirstDemoModel。
步骤 3 - 您将在解决方案资源管理器中看到已生成 ModelFirstDemoModel.Context.tt 和 ModelFirstDemoModel.tt 模板。
ModelFirstDemoModel.Context 生成 DbCcontext 和对象集,您可以返回并使用它们进行查询,例如上下文、学生和课程等。
另一个模板处理所有类型的学生、课程等。以下是学生类,它是从实体模型自动生成的。
以下是 C# 代码,其中输入一些数据并从数据库检索一些数据。
using System; using System.Linq; namespace EFModelFirstDemo { class Program { static void Main(string[] args) { using (var db = new ModelFirstDemoDBContext()) { // Create and save a new Student Console.Write("Enter a name for a new Student: "); var firstName = Console.ReadLine(); var student = new Student { StudentID = 1, FirstName = firstName }; db.Students.Add(student); db.SaveChanges(); var query = from b in db.Students orderby b.FirstName select b; Console.WriteLine("All student in the database:"); foreach (var item in query) { Console.WriteLine(item.FirstName); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } } }
执行上述代码时,您将收到以下输出 -
Enter a name for a new Student: Ali Khan All student in the database: Ali Khan Press any key to exit...
我们建议您逐步执行上述示例,以便更好地理解。