名称';数据库';在当前上下文中不存在

本文关键字:上下文 不存在 数据库 名称 | 更新日期: 2023-09-27 18:26:28

当我尝试使用WebMatrix启动我的网站时,遇到了这个错误。我有一个.cs文件,它调用var db = Database.Open("dbase");

我的项目中有一个名为"dbase"的数据库。我没有web.config文件,也没有使用WebMatrix包的导入,因为我是使用WebMatrix启动网站的,所以我认为我不需要它们。我需要用Razor标签包装代码吗,比如@{var db = Database.Open("dbase"); }?这也给我带来了一个错误。

是什么原因造成的?有人对此有什么解决方案吗?

名称';数据库';在当前上下文中不存在

我在浏览ASP.NET上的w3schools内容时遇到了这个问题。

基本上,上面的答案是正确的:你需要程序集(DLL)WebMatrix.Data,但评论者没有告诉你如何解决问题。方法如下:

首先,将文件WebMatrix.Data.dll复制到站点的/bin文件夹中。

如果你不确定从哪里得到它,你可以让WebMatrix使用启用数据库的模板(比如Bakery)创建一个新项目,并将其从该项目的bin文件夹中取出。或者,您可以在硬盘上搜索该文件。我有一份C:'Program Files'Microsoft ASP.NET'ASP.NET Web Pages'v2.0'Assemblies

然后在ASP.NET页面中导入程序集。

对于一个需要长期维护的网站来说,这是一个坏主意,但就本演示而言,您只需要将@using WebMatrix.Data;添加到产品页面的顶部。它最终应该看起来像这样:

@using WebMatrix.Data;
@{
var db = Database.Open("SmallBakery"); 
var selectQueryString = "SELECT * FROM Product ORDER BY Name"; 
}

现在它应该识别"数据库"符号,一切都会好起来的。

您只需要从NuGet库中获取此"Microsoft.AspNet.WebPages.WebData"。

您需要对WebMatrix.Data.dll程序集的引用(您可能有),并且需要WebMatrix.Data命名空间的using指令:

using WebMatrix.Data;

这将导入Database类,这样您就可以在不完全限定名称的情况下使用它。

目前还不清楚为什么你认为你不需要任何"导入"(我认为你的意思是使用上面的指令),但如果这是在一个普通的C#文件中,那么你肯定需要它们(或者你需要完全限定类型名,这很难看)。

在我的案例中,我安装了金块包,但它找不到WebMatrix.Data。问题是我创建了一个新项目,而我只是创建了一家网站(file/new/website),然后默认情况下会找到数据库(我想这是因为我第一次创建的项目类型)

现在它运行良好,希望这能帮助到一些人。