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

.NET Core 3代码优先迁移报错:无法解析符号‘UseIdentityColumns’怎么办?

解决.NET Core 3项目EF迁移中UseIdentityColumns不存在的错误

这个错误的核心原因是UseIdentityColumns是EF Core针对SQL Server的专属扩展方法,你的项目要么缺少必要的依赖包、没添加正确的命名空间引用,要么存在版本不一致的问题。下面是一步步的解决方案:

  • 第一步:安装SQL Server版EF Core依赖包
    UseIdentityColumns方法定义在Microsoft.EntityFrameworkCore.SqlServer这个NuGet包中,如果没安装它,编译器肯定找不到该方法。打开命令行进入项目目录,执行以下命令安装与.NET Core 3.x匹配的稳定版(比如3.1.32,这是.NET Core 3.1的最后一个稳定补丁版本):

    dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 3.1.32
    

    也可以通过Visual Studio的NuGet包管理器搜索Microsoft.EntityFrameworkCore.SqlServer并安装对应版本。

  • 第二步:添加正确的命名空间引用
    打开报错的ApplicationDbContextModelSnapshot.cs文件,在顶部添加以下using指令:

    using Microsoft.EntityFrameworkCore.SqlServer;
    

    有时候EF生成迁移快照时不会自动添加这个命名空间,手动补上就能让编译器识别到扩展方法。

  • 第三步:检查EF Core包版本一致性
    确保项目中所有EF Core相关包的版本完全统一,避免版本冲突。打开你的.csproj文件,检查所有EF相关的PackageReference条目,示例如下:

    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.32" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.32" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.32">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    

    注意:.NET Core 3.x不兼容EF Core 5.0及以上版本,所以不要安装高于3.1.x的EF Core包。

  • 第四步:重新生成迁移(若上述步骤无效)
    如果前面的操作都完成后仍报错,可以尝试清理现有迁移文件后重新生成:

    1. 删除项目中Migrations文件夹下的所有文件(包括ApplicationDbContextModelSnapshot.cs)
    2. 执行命令重新生成迁移:
      dotnet ef migrations add InitialCreate
      
    3. 再次执行数据库更新命令:
      dotnet ef database update
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:12:31