跳到主要内容

C# EF 数据库优先

介绍

Entity Framework (EF) 是 .NET 中一个强大的对象关系映射 (ORM) 框架,它允许开发者通过面向对象的方式与数据库进行交互。EF 提供了三种主要的工作流:数据库优先模型优先代码优先。本文将重点介绍数据库优先方法。

在数据库优先方法中,开发者首先设计数据库,然后使用 EF 从现有数据库生成数据模型类。这种方法非常适合那些已经拥有数据库或者更倾向于先设计数据库结构的开发者。

准备工作

在开始之前,请确保你已经安装了以下工具:

  • Visual Studio(推荐使用最新版本)
  • .NET SDK
  • SQL Server(或其他支持的数据库)

创建数据库

假设我们有一个简单的数据库 SchoolDB,其中包含两个表:StudentsCourses。表结构如下:

sql
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
EnrollmentDate DATE
);

CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
CourseName NVARCHAR(100),
Credits INT
);

使用 EF 数据库优先生成模型

  1. 创建新的 C# 项目:在 Visual Studio 中创建一个新的控制台应用程序项目。

  2. 安装 Entity Framework:通过 NuGet 包管理器安装 EntityFramework 包。

    bash
    Install-Package EntityFramework
  3. 添加 ADO.NET 实体数据模型:右键点击项目,选择“添加” -> “新建项”,然后选择“ADO.NET 实体数据模型”。选择“从数据库生成”选项,并连接到你的 SchoolDB 数据库。

  4. 选择数据库对象:在向导中选择你想要生成模型的表(例如 StudentsCourses),然后点击“完成”。

  5. 生成模型:EF 将根据数据库结构生成相应的实体类和上下文类。

代码示例

以下是一个简单的示例,展示如何使用生成的模型与数据库进行交互:

csharp
using System;
using System.Linq;

namespace SchoolDBExample
{
class Program
{
static void Main(string[] args)
{
using (var context = new SchoolDBEntities())
{
// 添加新学生
var newStudent = new Student
{
StudentID = 1,
FirstName = "John",
LastName = "Doe",
EnrollmentDate = DateTime.Now
};
context.Students.Add(newStudent);
context.SaveChanges();

// 查询所有学生
var students = context.Students.ToList();
foreach (var student in students)
{
Console.WriteLine($"Student: {student.FirstName} {student.LastName}");
}
}
}
}
}

输出

Student: John Doe

实际应用场景

假设你正在开发一个学校管理系统,你需要管理学生和课程的信息。使用 EF 数据库优先方法,你可以轻松地从现有的数据库生成数据模型,并通过简单的代码与数据库进行交互。这种方法特别适合那些已经拥有数据库结构的项目,或者需要与现有数据库集成的场景。

总结

通过本文,你已经了解了如何使用 Entity Framework 的数据库优先方法在 C# 中与数据库进行交互。我们从创建数据库开始,逐步讲解了如何生成数据模型,并展示了如何使用这些模型进行基本的数据库操作。

提示

如果你对 EF 的其他工作流(如代码优先)感兴趣,可以继续深入学习。EF 提供了丰富的功能,可以帮助你更高效地开发数据库驱动的应用程序。

附加资源

练习

  1. 尝试在你的本地 SQL Server 中创建一个新的数据库,并使用 EF 数据库优先方法生成模型。
  2. 编写代码,向数据库中添加新的课程记录,并查询所有课程信息。

通过完成这些练习,你将更深入地理解 EF 数据库优先方法的工作原理和应用场景。