ASP.NET Core 2+EF Core 2.0.2执行Update-Database报错System.Data.SqlClient不支持
System.Data.SqlClient is not supported on this platform 我之前也碰到过类似的问题,结合你的场景,大概率是依赖包兼容或者项目配置的问题,给你几个排查和解决的方向:
对齐EF Core相关包版本
首先要确保Microsoft.EntityFrameworkCore.SqlServer的版本和你用的EF Core版本(2.0.2)完全一致,版本不匹配很容易引发这类平台兼容问题。你可以直接编辑.csproj文件,确认对应的PackageReference:<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.2" />另外,EF Core 2.0.2依赖特定版本的
System.Data.SqlClient,建议你添加或确认这个包的引用:<PackageReference Include="System.Data.SqlClient" Version="4.4.3" />也可以在Package Manager Console里执行命令来更新/安装:
Update-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.0.2 Install-Package System.Data.SqlClient -Version 4.4.3检查项目目标平台配置
确认你的.csproj里的<TargetFramework>确实是netcoreapp2.0,如果是跨平台开发,建议添加<RuntimeIdentifiers>指定支持的运行时,比如:<PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> <RuntimeIdentifiers>win10-x64;linux-x64</RuntimeIdentifiers> </PropertyGroup>缺少运行时标识可能会导致系统无法找到适配当前平台的SqlClient版本。
清理项目缓存并重建
有时候旧的编译缓存或残留包会干扰执行,你可以:- 在Visual Studio里执行「清理解决方案」,然后「重建解决方案」
- 删除项目根目录下的
bin和obj文件夹 - 执行
dotnet restore或者在Package Manager Console里执行Restore-Packages重新恢复依赖
确认Package Manager Console的目标项目
执行Update-Database前,一定要检查Package Manager Console顶部的「默认项目」下拉框,确保选中的是包含你的DbContext的项目,选错项目会导致依赖缺失,进而触发这个错误。尝试用dotnet CLI命令替代
如果Package Manager Console的命令一直报错,试试用dotnet CLI执行数据库更新:dotnet ef database updateCLI的错误提示有时候会更详细,能帮你定位到具体的问题点。
内容的提问来源于stack exchange,提问作者Sasitha Iresh

