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

VS Code开发C# Web API时Entity Framework报CS0246错误如何解决

报错原因
  • 拼写错误:代码中存在两处EF核心类型名拼写错误
    • 声明数据集用的Dbset<>拼写错误,正确类型名为DbSet<>,第二个字母S需要大写
    • 构造函数入参用的DbContextOption<>拼写错误,正确类型名为DbContextOptions<>,末尾缺少字母s
  • NuGet包版本不兼容:项目引用了两个已废弃、版本不匹配的EF相关包
    • Microsoft.EntityFrameworkCore.SqlServer.Design v1.1.6是EF Core 1.x时代的遗留包,和当前使用的EF Core 5.0.9、.NET 5目标框架不兼容
    • Microsoft.EntityFrameworkCore.Tools.DotNet v2.0.3为废弃包,EF Core 3.0之后相关功能已整合到Microsoft.EntityFrameworkCore.Tools包中,多余引用会引发版本冲突
解决步骤

1. 修正代码拼写

将Conexion类的代码替换为以下内容:

using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Mvc;
using System.Data;
namespace web_api_db.Models{
    public class Conexion : DbContext{
        public Conexion(DbContextOptions<Conexion> options) : base (options){}
        public DbSet<Medicine> Medicine {get;set;}
    }
}

2. 清理csproj配置

删除项目csproj文件中两个过时包的引用行:

  • <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
  • <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
    修改后csproj的包引用节点如下:
<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.9" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.9" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.tools" Version="5.0.9">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
    <PackageReference Include="Microsoft.Net.Http.Headers" Version="2.2.8" />
</ItemGroup>

3. 重新编译项目

依次执行以下命令:

  1. 还原NuGet依赖:dotnet restore
  2. 编译项目:dotnet build
    执行完成后报错即可消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:15:00