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

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.EntityFrameworkCore
    • Microsoft.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:15:36