.NET Core 3代码优先迁移报错:无法解析符号‘UseIdentityColumns’怎么办?
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包。
第四步:重新生成迁移(若上述步骤无效)
如果前面的操作都完成后仍报错,可以尝试清理现有迁移文件后重新生成:- 删除项目中
Migrations文件夹下的所有文件(包括ApplicationDbContextModelSnapshot.cs) - 执行命令重新生成迁移:
dotnet ef migrations add InitialCreate - 再次执行数据库更新命令:
dotnet ef database update
- 删除项目中
内容的提问来源于stack exchange,提问作者Eugene Sukh

