Blazor .NET7项目出现Microsoft.Data.SqlClient平台不支持错误求助
解决Blazor项目中「Microsoft.Data.SqlClient is not supported on this platform」错误
问题根源
你遇到的错误核心原因是Blazor WebAssembly(WASM)客户端不支持Microsoft.Data.SqlClient,该库依赖原生系统组件,无法在浏览器的WASM沙箱环境中运行。另外你在客户端Program.cs中直接初始化数据库的操作也不符合Blazor WASM的架构设计——客户端不应直接连接数据库,所有数据操作需通过后端API完成。
解决方案
1. 调整项目分层与依赖
- 将
Persistence层的引用仅保留在后端项目(如API项目或Blazor Server项目),移除客户端项目对Persistence层的引用,避免客户端加载不兼容的库。 - 客户端通过调用后端API接口来实现数据交互,而非直接操作DbContext或仓储。
2. 移至后端执行数据库初始化
将数据库初始化代码从客户端Program.cs转移到后端项目的Program.cs中:
var app = builder.Build(); // 仅在后端项目中执行数据库初始化 using var scope = app.Services.CreateScope(); var dbContext = scope.ServiceProvider.GetRequiredService<LIUContext>(); dbContext.Database.EnsureCreated(); await app.RunAsync();
3. 检查Blazor Server项目的包依赖(如果是Server类型)
如果你的项目是Blazor Server,仍出现该错误,按以下步骤排查:
- 确认后端项目的目标框架为
.NET 7,在项目文件(.csproj)中检查:<TargetFramework>net7.0</TargetFramework> - 确保安装的是Microsoft.EntityFrameworkCore.SqlServer包(而非单独安装Microsoft.Data.SqlClient),该包会自动引入兼容版本的Microsoft.Data.SqlClient:
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 7.0.0 - 清理项目并重新生成:删除
bin和obj目录,执行dotnet clean和dotnet build命令。
4. 验证数据库操作流程
通过Package Manager Console能正常创建数据库,说明你的Persistence层配置是正确的,只需确保所有数据库相关操作都在后端执行,客户端仅负责UI展示和API调用。
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

