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

Error CS0103:名称'db'未在当前上下文存在,多表视图实现受阻

解决Error CS0103: 名称'db'在当前上下文中不存在的问题

咱们直接说核心问题:你在控制器的Index方法里直接用了db这个变量,但根本没声明或者实例化它,编译器自然找不到这个名称啦。另外你的代码里还有几个小拼写错误,也得一起修正。

具体修复步骤:

  • 第一步:实例化你的数据库上下文
    你的KMSConection是继承自ApplicationDbContext的数据库上下文类,所以在使用它之前,需要先创建一个实例。在Index方法里添加一行:var db = new KMSConection();
  • 第二步:修正拼写错误
    • 把Tolist()改成ToList()(C#里方法名是大写开头的)
    • 把select or改成select o(这里明显是手误打错了变量名)
  • 第三步:用using语句管理上下文(可选但推荐)
    为了避免数据库连接资源泄漏,最好用using语句包裹上下文实例,确保它能被正确释放。

修正后的控制器代码:

using System.Linq; 
using System.Web.Mvc; 
using KMS.Models; 

namespace KMS.Controllers 
{ 
    public class KMSController : Controller
    { 
        public ActionResult Index() 
        { 
            using(var db = new KMSConection())
            {
                KMSConection cs = new KMSConection(); 
                cs.Areas = (from o in db.Areas select o).ToList(); 
                cs.AreaTypes = (from o in db.AreaTypes select o).ToList(); 
                return View(cs); 
            }
        } 
    } 
}

额外小建议:

你的KMSConection类作为数据库上下文,命名可以更规范一点,比如改成KMSDbContext,这样其他开发者一看就知道它的作用。另外,其实你可以单独创建一个纯ViewModel类(不继承DbContext)来承载查询结果,这样更符合MVC的分层设计,不过你现在的写法也能正常运行。

内容的提问来源于stack exchange,提问作者Cristian R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:34:30