- 实体框架教程
- 实体框架 - 首页
- 实体框架 - 概述
- 实体框架 - 架构
- 实体框架 - 环境设置
- 实体框架 - 数据库设置
- 实体框架 - 数据模型
- 实体框架 - DbContext
- 实体框架 - 类型
- 实体框架 - 关系
- 实体框架 - 生命周期
- 实体框架 - 代码优先方法
- 实体框架 - 模型优先方法
- 实体框架 - 数据库优先方法
- 实体框架 - 开发方法
- 实体框架 - 数据库操作
- 实体框架 - 并发
- 实体框架 - 事务
- 实体框架 - 视图
- 实体框架 - 索引
- 实体框架 - 存储过程
- 实体框架 - 脱机实体
- 实体框架 - 表值函数
- 实体框架 - 原生SQL
- 实体框架 - 枚举支持
- 实体框架 - 异步查询
- 实体框架 - 持久化
- 实体框架 - 投影查询
- 实体框架 - 命令日志
- 实体框架 - 命令拦截
- 实体框架 - 空间数据类型
- 实体框架 - 继承
- 实体框架 - 迁移
- 实体框架 - 渴望加载
- 实体框架 - 延迟加载
- 实体框架 - 显式加载
- 实体框架 - 验证
- 实体框架 - 跟踪更改
- 实体框架 - 彩色实体 (Colored Entities - 此翻译可能需要根据上下文调整)
- 实体框架 - 代码优先方法
- 实体框架 - 第一个示例
- 实体框架 - 数据注释
- 实体框架 - Fluent API
- 实体框架 - 种子数据库
- 实体框架 - 代码优先迁移
- 实体框架 - 多个DbContext
- 实体框架 - 嵌套实体类型
- 实体框架资源
- 实体框架 - 快速指南
- 实体框架 - 有用资源
- 实体框架 - 讨论
实体框架 - 模型优先方法
在本章中,让我们学习如何使用称为“模型优先”的工作流在设计器中创建实体数据模型。
当您开始一个数据库甚至还不存在的新项目时,模型优先方法非常有用。
该模型存储在 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 - 右键单击设计图面上的新实体,然后选择添加新建 → 标量属性,输入 Name 作为属性的名称。
步骤 12 - 输入 FirstName,然后添加另外两个标量属性,例如 LastName 和 EnrollmentDate。
步骤 13 - 通过遵循上述所有步骤添加另外两个实体 Course 和 Enrollment,并添加一些标量属性,如下所示。
步骤 14 - 我们在 Visual Designer 中有三个实体,让我们在它们之间添加一些关联或关系。
步骤 15 - 右键单击设计图面,然后选择添加新建 → 关联…
步骤 16 - 使关系的一端指向 Student,其多重性为一,另一端指向 Enrollment,其多重性为多。
步骤 17 - 这意味着一个 Student 有多个 Enrollments,而 Enrollment 属于一个 Student。
步骤 18 - 确保选中“向'Post'实体添加外键属性”复选框,然后单击“确定”。
步骤 19 - 同样,在 Course 和 Enrollment 之间添加另一个关联。
步骤 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 生成器,并在“名称”字段中输入 ModelFirstDemoModel。
步骤 3 - 您将在解决方案资源管理器中看到生成了 ModelFirstDemoModel.Context.tt 和 ModelFirstDemoModel.tt 模板。
ModelFirstDemoModel.Context 生成 DbCcontext 和您可以返回并用于查询的对象集,例如上下文、Students 和 Courses 等。
另一个模板处理所有类型 Student、Courses 等。以下是 Student 类,它是从实体模型自动生成的。
以下是 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...
我们建议您逐步执行上述示例,以便更好地理解。