Visual Studio 2022 Mac版:Razor+EF实现MVC关联及CRUD遇DBContext空值问题
解决Visual Studio 2022 Mac版中EF关联控制器时DB上下文类为空的问题
你遇到的问题根源是项目中还没有定义Entity Framework Core的DbContext类,VS的控制器脚手架找不到可用的上下文实例,所以那个字段是空的。按照以下步骤操作就能解决:
1. 创建DbContext类
在你的WiseTaskMgtSystem.Models命名空间下新建一个类(比如命名为AppDbContext),代码如下:
using Microsoft.EntityFrameworkCore; namespace WiseTaskMgtSystem.Models { public class AppDbContext : DbContext { // 声明对应UserModel的DbSet,用于数据库操作 public DbSet<UserModel> Users { get; set; } // 构造函数,接收DbContext配置选项 public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } } }
2. 安装必要的NuGet包
确保你的项目已经安装了EF Core相关包:
- 右键项目 → 选择「Manage NuGet Packages」
- 在搜索栏分别搜索并安装:
Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Tools- 数据库提供者包(Mac上常用
Microsoft.EntityFrameworkCore.Sqlite,也可根据需求选择SQL Server对应包)
3. 在Program.cs中注册DbContext
打开项目根目录的Program.cs,添加DbContext的依赖注入配置:
var builder = WebApplication.CreateBuilder(args); // 添加DbContext注册,这里以SQLite为例,可替换为其他数据库配置 builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection"))); // 其他现有代码(如AddControllersWithViews等)保持不变
同时,在appsettings.json中添加连接字符串:
{ "ConnectionStrings": { "DefaultConnection": "Data Source=WiseTaskMgt.db" }, // 其他配置项... }
4. 重新生成项目并创建控制器
- 点击顶部菜单「Build」→「Rebuild Solution」
- 再次尝试创建带UI的控制器,此时「要使用的DB上下文类」下拉框里应该会显示
AppDbContext选项了
额外提示
你的UserModel里的password字段建议改成Password(符合C# PascalCase命名规范),虽然不影响功能,但能让代码更规范。
内容的提问来源于stack exchange,提问作者Heshan
相关产品推荐
相关产品推荐

