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

.NET 7迁移后使用DbContext触发Microsoft.Data.SqlClient平台不支持异常

问题:迁移至.NET 7后使用DbContext触发Microsoft.Data.SqlClient平台不支持错误

环境信息

  • 原项目:.NET Framework 4.8类库
  • 目标框架:.NET 7
  • 运行环境:Windows 10 + Visual Studio 2022
  • 数据库:云端SQL Server

错误信息

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

当前NuGet包引用

<ItemGroup>
  <PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.5" />
  <PackageReference Include="Microsoft.Data.SqlClient.SNI.runtime" Version="5.1.1" />
  <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.15">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.15">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
  <PackageReference Include="Microsoft.SqlServer.Server" Version="1.0.0" />
  <PackageReference Include="PreEmptive.Protection.Checks.Attributes" Version="2.0.0" />
  <PackageReference Include="System.Data.Common" Version="4.3.0" />
  <PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
  <PackageReference Include="System.Interactive.Async" Version="6.0.1" />
  <PackageReference Include="System.Memory" Version="4.5.5" />
  <PackageReference Include="System.Reflection.Emit" Version="4.7.0" />
  <PackageReference Include="System.Reflection.TypeExtensions" Version="4.7.0" />
  <PackageReference Include="System.Runtime.Handles" Version="4.3.0" />
  <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
  <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
  <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Options" Version="8.0.1" />
  <PackageReference Include="Microsoft.Extensions.Primitives" Version="8.0.0" />
  <PackageReference Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
  <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  <PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
  <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
  <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
  <PackageReference Include="System.Data.OleDb" Version="8.0.0" />
  <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
  <PackageReference Include="System.Management" Version="8.0.0" />
  <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
  <PackageReference Include="System.Security.Cryptography.Cng" Version="5.0.0" />
  <PackageReference Include="System.Security.Cryptography.Pkcs" Version="8.0.0" />
  <PackageReference Include="System.Security.Cryptography.Xml" Version="7.0.1" />
</ItemGroup>

DbContext代码

public partial class dbContext : DbContext
{
    public dbContext()
        : base(new DbContextOptionsBuilder<dbContext>().UseSqlServer("Data Source=SERVER_IP;Initial Catalog=MY_DB_NAME;User Id=USER_NAME;Password=MY_PW;").Options)
    {
    }
}

已尝试的解决方法

  • 降级相关依赖包版本
  • 在.csproj中指定RuntimeIdentifier并手动复制DLL
  • 清理NuGet缓存

解决方案

1. 清理冲突的SqlClient包

同时引用Microsoft.Data.SqlClient和System.Data.SqlClient会导致平台适配冲突,直接移除System.Data.SqlClient包,保留Microsoft.Data.SqlClient即可。

2. 统一包版本适配.NET 7

  • 将所有Microsoft.Extensions相关包从8.0.x降级到7.0.x版本(与EF Core 7.0.15版本匹配),避免跨大版本依赖冲突。
  • 移除过时的Microsoft.EntityFrameworkCore.SqlServer.Design包(1.1.6属于EF Core早期版本,EF Core 7已不需要单独的Design包)。
  • 确保Microsoft.Data.SqlClient.SNI.runtime版本与Microsoft.Data.SqlClient版本一致(当前5.1.1和5.1.5不匹配,升级SNI.runtime到5.1.5)。

调整后的核心NuGet引用示例:

<ItemGroup>
  <PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.5" />
  <PackageReference Include="Microsoft.Data.SqlClient.SNI.runtime" Version="5.1.5" />
  <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.15">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.15">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
  <!-- 其他Microsoft.Extensions包统一降级到7.0.x版本 -->
</ItemGroup>

3. 验证项目配置

  • 在.csproj中确认目标框架设置为net7.0,Windows 10环境下无需额外指定RuntimeIdentifier:
<TargetFramework>net7.0</TargetFramework>
  • 清理项目并重新生成,确保所有依赖包正确还原。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:29:50