You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用EF Core执行数据库迁移时遇Microsoft.Data.SqlClient平台不支持错误

解决.NET Core 7中EF Core迁移时Microsoft.Data.SqlClient平台不支持错误

问题场景

使用.NET Core 7且所有依赖已更新,执行dotnet ef database update命令时编译成功,但抛出平台不支持异常,错误信息如下:

Build started...
Build succeeded. 

System.PlatformNotSupportedException: Microsoft.Data.SqlClient is not supported on this platform.

at Microsoft.Data.SqlClient.SqlConnection..ctor(String connectionString)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.CreateDbConnection()
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.get_DbConnection()
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass18_0.b__0(DateTime giveUp)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__DisplayClass12_02.<Execute>b__0(DbContext _, TState s) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func2 operation, Func`2 verifySucceeded)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists(Boolean retryOnNotExists)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists()
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

Microsoft.Data.SqlClient is not supported on this platform.

项目的.csproj文件内容:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UserSecretsId>2f7cbad2-b9a5-49ce-ac90-3ec6f5ce8200</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.10">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.10" />
    <PackageReference Include="MinimalApis.Extensions" Version="0.11.0" />
  </ItemGroup>
</Project>

解决方法

  • 确认运行平台兼容性:执行dotnet --info查看当前操作系统和.NET SDK版本,确保使用的是Microsoft.Data.SqlClient支持的平台(避免ARM32等小众架构)。
  • 显式引入Microsoft.Data.SqlClient包:在.csproj的<ItemGroup>中添加对应版本的包引用,版本需与Microsoft.EntityFrameworkCore.SqlServer保持一致(7.0.10):
    <PackageReference Include="Microsoft.Data.SqlClient" Version="7.0.10" />
    
  • 指定工具运行架构:如果是ARM架构设备(如M系列Mac),执行迁移命令时显式指定架构:
    dotnet ef database update --arch x64
    
  • 更新dotnet ef全局工具:执行命令更新工具至与项目匹配的.NET 7版本:
    dotnet tool update --global dotnet-ef
    
  • 清理重建项目:删除项目目录下的bin和obj文件夹,然后执行:
    dotnet clean && dotnet build
    
    完成后重新运行迁移命令。

内容的提问来源于stack exchange,提问作者Melza SacZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:22:49