使用 EF Core 连接 MySQL 数据库

1. 整体流程

下面是使用 EF Core 连接 MySQL 数据库的整体流程:

journey
    title 使用 EF Core 连接 MySQL 数据库

    section 安装必要的包
        step 安装 EF Core 迁移工具包
        step 安装 MySQL 数据库提供程序

    section 创建数据库上下文
        step 创建一个继承自 DbContext 的类
        step 配置数据库连接字符串

    section 创建实体模型
        step 创建一个或多个实体类
        step 定义实体类的属性和关系

    section 迁移数据库
        step 使用 EF Core 迁移工具创建迁移文件
        step 更新数据库

    section 使用数据库
        step 在代码中使用数据库上下文类
        step 进行增删改查操作

    section 错误处理
        step 处理数据库连接错误

2. 安装必要的包

首先,我们需要安装一些必要的包。在这个例子中,我们使用 NuGet 来安装这些包。

  • EF Core 迁移工具包:Microsoft.EntityFrameworkCore.Tools
  • MySQL 数据库提供程序:MySql.Data.EntityFrameworkCore

可以使用以下命令来安装这些包:

dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package MySql.Data.EntityFrameworkCore

3. 创建数据库上下文

接下来,我们需要创建一个继承自 DbContext 的类,来表示我们要连接的数据库。我们可以在这个类中配置数据库连接字符串以及定义数据库中的表格。

using Microsoft.EntityFrameworkCore;

public class MyDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connectionString = "your_connection_string_here";
        optionsBuilder.UseMySQL(connectionString);
    }

    public DbSet<User> Users { get; set; }
    // 其他的 DbSet
}

上述代码中,我们创建了一个名为 MyDbContext 的类,并在 OnConfiguring 方法中配置了数据库连接字符串。你需要将 your_connection_string_here 替换为你的实际连接字符串。

同时,我们还定义了一个名为 UsersDbSet 属性,它表示了数据库中的一个表格。你可以在这里添加其他的 DbSet 属性来表示其他的表格。

4. 创建实体模型

在 EF Core 中,我们使用实体类来表示数据库中的表格。每个实体类都对应着数据库中的一行数据。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public int Age { get; set; }
    // 其他的属性

    // 导航属性
    public virtual ICollection<Order> Orders { get; set; }
}

上述代码中,我们创建了一个名为 User 的实体类,它有一个自增长的主键属性 Id,一个必填的 Name 属性以及一个可选的 Age 属性。你可以根据实际需求来定义其他的属性。

5. 迁移数据库

在创建了数据库上下文和实体模型之后,我们需要使用 EF Core 迁移工具来创建数据库表格。

首先,打开命令行工具,进入项目的根目录,并执行以下命令:

dotnet ef migrations add InitialCreate

上述命令将创建一个名为 InitialCreate 的迁移文件,它包含了创建数据库表格的代码。

接下来,执行以下命令来更新数据库:

dotnet ef database update

上述命令将根据迁移文件中的代码,创建数据库表格。

6. 使用数据库

在创建了数据库表格之后,我们可以在代码中使用数据库上下文类来进行增删改查等操作。

using (var context = new MyDbContext())
{
    // 添加数据
    var user = new User { Name = "John", Age = 25 };
    context.Users.Add(user);
    context.SaveChanges();

    // 查询数据
    var users = context.Users.ToList();

    // 修改数据
    user.Name = "Alice";
    context.SaveChanges();

    // 删除数据
    context.Users.Remove(user);
    context.SaveChanges();
}

上述代码中,我们首先创建了一个 MyDbContext 实例,并使用它进行数据操作。