Blazor使用MySql数据库

本文介绍了如何在Blazor应用中使用RazorPages添加导航菜单,通过MyUser.razor页面展示用户列表,以及通过UserService与MySql数据库进行交互,实现CRUD操作。重点涉及了依赖注入和EntityFrameworkCore的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我是从页面开始写的。
Components/Layout/NavMenu.razor中添加菜单:

 <div class="nav-item px-3">
    <NavLink class="nav-link" href="User">
        <span class="oi oi-list-rich" aria-hidden="true"></span> User
    </NavLink>
</div>

Pages文件夹中添加MyUser.razor:

@page "/User"
@using BlazorApp.Service
@using BlazorApp.Entity
@inject UserService myUserService

<h3>User</h3>
<table class="table">
    <tr>
        <td>id</td>
        <td>username</td>
        <td>email</td>
        <td>password</td>
        <td>phone_num</td>
    </tr>
    @foreach (var useritem in userlist)
    {
          <tr>
            <td>@useritem.Id</td>
            <td>@useritem.Username</td>
            <td>@useritem.Email</td>
            <td>@useritem.Password</td>
            <td>@useritem.PhoneNum</td>
        </tr>  
    }
    
</table>
@code {
    private MyUser[]? userlist;

    protected override async Task OnInitializedAsync()
    {
        userlist = await myUserService.getUserList();
    }
}

“@inject UserService myUserService” 注入UserService实例,该实例是在Program.cs中声明的。

在Program.cs中“var builder = WebApplication.CreateBuilder(args)”下面添加UserService实例:

builder.Services.AddSingleton<UserService>();

新建Service文件夹,其中添加UserService.cs:

using BlazorApp.Entity;
using BlazorApp.Models;
using MySqlConnector;
using System.Data;

namespace BlazorApp.Service
{
    public class UserService
    {
        public MySqlConnection connection;
        public UserService() {
            connection = new MySqlConnection("server=localhost;user id=root;password=234sbn;port=3306;database=test;");
        }
        public async Task<MyUser[]> getUserList()
        {
            if(connection.State != ConnectionState.Open)
            {
                connection.Open();

            }

            List<MyUser> list = new List<MyUser>();
            using (MySqlCommand cmd = new MySqlCommand("select * from sys_user", connection))
            {
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        list.Add(new MyUser()
                        {
                            Id = reader.GetInt32("id"),
                            Username = reader.GetString("username"),
                            Email = reader.GetString("email"),
                            Password = reader.GetString("password"),
                            PhoneNum = reader.GetString("phone_num"),
                        });
                    }
                }
            }
            connection.Close();

            return list.ToArray();
        }
    }
}


新建Entity文件夹,其中添加MyUser.cs:

namespace BlazorApp.Entity
{
    public class MyUser
    {
        public int Id { get; set; }
        public string Username { get; set; }
        public string Email { get; set; }

        public string Password { get; set; }
        public string PhoneNum { get; set; }
    }
}


用NuGet安装MySqlConnector和Microsoft.EntityFrameworkCore。
在MySql数据库中新建表sys_user:
在这里插入图片描述

### 如何在 Blazor 项目中使用 Entity Framework 和 MySQL 数据库 为了使 Blazor 应用程序能够与 MySQL 数据库交互,需配置应用程序以支持 Entity Framework Core 并安装必要的提供程序。 #### 安装所需的包 要让 Blazor 使用 MySQL 数据库,必须先通过 NuGet 获取 `MySql.EntityFrameworkCore` 包。这可以通过 Visual Studio 的解决方案资源管理器完成,在主菜单选择 “工具” > “NuGet 包管理器” > “管理解决方案的 NuGet 包”,然后搜索并安装上述包[^3]。 #### 配置数据库上下文 定义一个继承自 `DbContext` 类的新类作为数据访问层的一部分。此上下文应包含表示表的 DbSet 属性以及用于指定连接字符串的方法: ```csharp using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Item> Items { get; set; } } ``` #### 设置服务注入 在 `Startup.cs` 文件中的 `ConfigureServices()` 方法里注册数据库上下文和服务依赖项: ```csharp services.AddDbContext<AppDbContext>(options => options.UseMySQL(Configuration.GetConnectionString("DefaultConnection"))); ``` 这里假设已在项目的 appsettings.json 或其他位置设置了名为 DefaultConnection 的连接字符串。 #### 执行迁移命令 利用 .NET CLI 工具来创建和应用数据库模式更改。打开终端窗口运行如下命令初始化迁移历史记录并向目标架构添加初始版本: ```bash dotnet ef migrations add InitialCreate dotnet ef database update ``` 这些操作会基于模型类自动构建相应的 SQL 表结构到所选存储引擎上。 #### 实现 CRUD 功能 最后一步是在页面组件内部编写逻辑处理函数实现增删改查功能。例如,可以像下面这样查询所有条目列表: ```razor @page "/items" @inject NavigationManager NavManager @inject AppDbContext Context <ul> @foreach (var item in items) { <li>@item.Name</li> } </ul> @code { private List<Item> items; protected override async Task OnInitializedAsync() { items = await Context.Items.ToListAsync(); } } ``` 以上就是如何设置 Blazor WebAssembly 或服务器端应用以便于同 MySQL 合作的大致流程概述[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值