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

添加Entity Framework至.NET Core项目遇dotnet restore异常求助

问题诊断与解决方案

首先明确一点:你选错了Entity Framework的版本,这是所有问题的核心!

错误原因分析

  • 你添加的EntityFramework包是EF6,它是专门为传统.NET Framework设计的,完全不支持.NET Core。
  • 为什么dotnet restore卡住无提示:.NET Core的包还原工具在处理这种不兼容的.NET Framework专属包时,会陷入静默等待或者后台无限尝试解析依赖,不会给出明确的失败提示,只会停在"Restoring packages..."这一行。
  • 为什么using System.Data.Entity;报错:这个命名空间属于EF6,而你的.NET Core环境中根本不存在对应的程序集,IDE自然找不到这个命名空间。
  • 移除EF6后恢复正常:因为项目回到了纯.NET Core的依赖体系,没有了不兼容的包,所以还原和运行都能正常执行。

正确的解决方案

你需要使用Entity Framework Core(EF Core),这是微软为.NET Core/.NET 5+打造的轻量、跨平台版本的EF。具体步骤如下:

  1. 打开你的DBCreation.csproj,删除原来的EF6包引用:
    <!-- 删掉这一段 -->
    <ItemGroup> 
      <PackageReference Include="EntityFramework" Version="6.2.0"/>
    </ItemGroup>
    
  2. 添加适配你.NET Core版本的EF Core包引用:
    由于你的.NET Core Runtime版本是2.0.7,所以要选择EF Core 2.x系列的版本(比如2.0.7),确保版本匹配:
    <ItemGroup>
      <!-- 核心EF Core包 -->
      <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.7" />
      <!-- 如果你的项目要连接SQL Server,添加这个包;其他数据库比如MySQL/PostgreSQL请对应替换 -->
      <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.7" />
    </ItemGroup>
    
  3. 执行dotnet restore,这次应该会正常完成并显示耗时。
  4. 调整代码中的命名空间引用:将using System.Data.Entity;替换为EF Core的命名空间:
    using Microsoft.EntityFrameworkCore;
    
  5. 之后执行dotnet build和dotnet run就可以正常构建运行了。

额外注意事项

  • 版本匹配很重要:你的SDK是2.1.105,对应.NET Core 2.0 Runtime,所以EF Core的版本必须选2.x系列,不要选3.x或更高版本,否则会出现版本不兼容的错误。
  • 如果需要使用EF的迁移功能,还需要添加Microsoft.EntityFrameworkCore.Tools包(同样选2.0.7版本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:40:20