Razor项目中EF Core连接MySQL报错:UseMysql方法未定义
问题描述
新建了一个Razor项目,计划用MySQL作为数据库服务器。按照MySQL官方的两个示例配置Entity Framework Core连接MySQL时,遇到错误:
error CS1061: 'DbContextOptionsBuilder' does not contain a definition for 'UseMysql'
即上下文构建器无法解析UseMysql方法,请问是否缺少必要配置?以下是代码及项目依赖配置:
ApplicationContext.cs
using Microsoft.EntityFrameworkCore; using MySql.EntityFrameworkCore.Extensions; using Database.Entities; namespace Database; public class ApplicationContext : DbContext { public DbSet<User> Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder builder) => builder.UseMysql("server=localhost;database=razor;username=root;password=VuYbe*$LnjhET%IM)g7qPvZ6KQ@F#!Hr53^Bk(dGWRxXCJzaw4ft8Ns&D9pyA2m+"); }
项目.csproj依赖
<ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.10" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.10"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> <PackageReference Include="MySql.Data" Version="8.0.31" /> <PackageReference Include="MySql.EntityFrameworkCore" Version="6.0.7" /> </ItemGroup>
解决方法
- 修正方法名称大小写:这是核心问题,EF Core的MySQL扩展方法是
UseMySQL(首字母M大写),你代码里写的是UseMysql(小写m),编译器无法识别。修改后代码如下:protected override void OnConfiguring(DbContextOptionsBuilder builder) => builder.UseMySQL("server=localhost;database=razor;username=root;password=VuYbe*$LnjhET%IM)g7qPvZ6KQ@F#!Hr53^Bk(dGWRxXCJzaw4ft8Ns&D9pyA2m+"); - 确认命名空间有效性:你已经正确引用了
MySql.EntityFrameworkCore.Extensions,这是UseMySQL方法的所在命名空间,无需调整。 - 版本兼容性检查:你的EF Core(6.0.10)和MySql.EntityFrameworkCore(6.0.7)同属.NET 6系列,版本兼容。若后续仍有问题,可尝试将MySql.EntityFrameworkCore升级到与EF Core版本更接近的版本(如6.0.10)。
- 清理重建项目:若VS缓存导致方法识别异常,可右键解决方案选择「清理解决方案」,再重新生成;必要时重启Visual Studio。
内容的提问来源于stack exchange,提问作者jack
相关产品推荐
相关产品推荐

