使用 MySQL 和 EF Core 连接字符串的指南

在现代软件开发中,使用对象关系映射(ORM)工具来简化数据库操作是十分普遍的。Entity Framework Core(EF Core)是一个轻量级的开源 ORM 框架,能够帮助开发者与数据库进行交互,简化数据访问并提高生产力。本文将介绍如何使用 EF Core 连接到 MySQL 数据库,并提供相关代码示例。

1. 环境准备

在开始之前,请确保您已经安装了以下软件:

  • .NET SDK:需要安装 .NET 5.0 或更高版本。
  • MySQL:MySQL 数据库服务已安装并运行。
  • MySQL Connector/Net:确保已安装适用于 EF Core 的 MySQL 数据提供程序。

您可以通过 NuGet 包管理器安装 MySQL 数据提供程序。在终端中运行以下命令:

dotnet add package Pomelo.EntityFrameworkCore.MySql

2. 连接字符串

连接字符串是应用程序与数据库进行连接时所需的详细信息。以下是一个典型的 MySQL 连接字符串示例:

Server=localhost;Database=mydatabase;User=myuser;Password=mypassword;

在 EF Core 中使用此连接字符串的方式如下所示:

3. 创建 DbContext

在 EF Core 中,需要定义一个继承自 DbContext 的类,通常称为 ApplicationDbContext。在这个类中,您可以定义数据库表映射及其相关对象。

using Microsoft.EntityFrameworkCore;

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {
    }

    public DbSet<Product> Products { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

4. 配置服务

Startup.cs 中,您需要配置依赖注入以使用 DbContext。在 ConfigureServices 方法中添加以下代码:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseMySql("Server=localhost;Database=mydatabase;User=myuser;Password=mypassword;",
        new MySqlServerVersion(new Version(8, 0, 21))));
}

5. 类图示例

在这里,用 Mermeid 语法展示 Product 类和 ApplicationDbContext 类之间的关系:

classDiagram
    class ApplicationDbContext {
        +DbSet<Product> Products
    }

    class Product {
        +int Id
        +string Name
        +decimal Price
    }
    
    ApplicationDbContext --> Product : Aggregates

6. 数据库迁移

有了 DbContext 及相关实体类后,您可以创建数据库迁移。使用以下命令创建迁移:

dotnet ef migrations add InitialCreate

接下来,运行命令应用迁移并创建数据库:

dotnet ef database update

7. 使用 DbContext 进行数据操作

以下示例展示了如何使用 DbContext 来进行数据的增删改查操作:

using (var context = new ApplicationDbContext(options))
{
    // 添加新产品
    var product = new Product { Name = "Sample Product", Price = 9.99M };
    context.Products.Add(product);
    context.SaveChanges();

    // 查询产品
    var products = context.Products.ToList();

    // 更新产品
    var firstProduct = products.First();
    firstProduct.Price = 11.99M;
    context.SaveChanges();

    // 删除产品
    context.Products.Remove(firstProduct);
    context.SaveChanges();
}

8. 状态图示例

使用 Mermaid 语法展示一个简单的产品状态变化过程:

stateDiagram
    [*] --> Available
    Available --> Sold : Purchase
    Sold --> Available : Return
    Sold --> [*] : Archive

结论

通过本文的介绍,您应当能够了解如何在 .NET 应用程序中使用 EF Core 连接到 MySQL 数据库。尽管在实际开发中可能会遇到更复杂的用例,但基本的连接字符串、配置 DbContext、进行数据库迁移及数据操作的流程是相同的。希望这篇文章能帮助您快速上手并在未来的项目中应用这一技术。在使用过程中的任何问题,欢迎在评论区讨论!