名称';数据库';在当前上下文中不存在
本文关键字:上下文 不存在 数据库 名称 | 更新日期: 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),然后默认情况下会找到数据库(我想这是因为我第一次创建的项目类型)
现在它运行良好,希望这能帮助到一些人。