Blazor EF Core 数据库操作入门

来源:这里教程网 时间:2026-02-21 17:34:59 作者:

Blazor 结合 EF Core 做数据库操作,核心是把服务注册好、上下文配对、页面里调用得当——不难,但容易卡在依赖注入或异步处理上。

一、配置 EF Core 数据库上下文

先在 Program.cs(.NET 6+)中注册 DbContext:

AddDbContextFactory<appdbcontext></appdbcontext>
(推荐 Server 项目)或
AddDbContext<appdbcontext></appdbcontext>
(WASM 需注意限制)
连接字符串从
appsettings.json
读取,确保包含正确的提供程序(如 SQL Server、SQLite 或 PostgreSQL)
Server 端建议启用
EnableSensitiveDataLogging
方便调试(上线前关掉)

二、在 Blazor 组件中安全使用 DbContext

Blazor Server 和 WASM 处理方式不同:

Blazor Server:用
@inject IDbContextFactory<appdbcontext> DbFactory</appdbcontext>
,每次操作都
using var ctx = DbFactory.CreateDbContext();
——避免跨请求复用上下文
Blazor WASM:EF Core 不直接访问数据库,需通过 API 控制器暴露接口,前端调用 HTTP 请求(如
HttpClient.PostAsJsonAsync
所有数据库操作必须 异步,组件内用
await
+
StateHasChanged()
触发重绘(尤其在事件回调后)

三、常见增删改查写法示例

以查询用户列表为例(Server 端):

var users = await ctx.Users.ToListAsync();
ctx.Users.Add(new User { Name = "张三" }); await ctx.SaveChangesAsync();
var user = await ctx.Users.FindAsync(id); if (user != null) { user.Name = "李四"; await ctx.SaveChangesAsync(); }
ctx.Users.Remove(user); await ctx.SaveChangesAsync();

注意:

FindAsync
FirstOrDefaultAsync
更高效(主键查找),非主键条件请用后者。

四、错误处理与调试小贴士

数据库操作失败很常见,别让页面白屏:

try/catch
包裹关键操作,捕获
DbUpdateException
SqlException
等具体异常
检查迁移是否已应用:
dotnet ef migrations add Init
+
dotnet ef database update
WASM 调试时,F12 查看 Network 标签确认 API 是否返回 200,后端日志看 EF 执行的 SQL

基本上就这些。跑通第一个“加载用户列表”后,后续 CRUD 就顺了。

相关推荐