“数据库”这个名称在当前上下文中不存在?

时间:2012-03-03 15:12:25

标签: c# sql sql-server razor webmatrix

当我尝试使用WebMatrix启动网站时出现此错误。我有一个.cs文件,可以拨打电话var db = Database.Open("dbase");

我的项目中有一个名为“dbase”的数据库。我没有web.config文件,也没有使用WebMatrix包的导入,因为我使用WebMatrix启动网站,所以我不相信我应该需要它们。我是否需要将代码包装在Razor标记中,例如@{var db = Database.Open("dbase"); }?这对我来说也是一个错误。

可能导致这种情况的原因是什么?有没有人对此有任何解决方案?

4 个答案:

答案 0 :(得分:7)

当我浏览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"; 
}

现在它应该识别符号“数据库”,一切都会很好。

答案 1 :(得分:7)

您只需从NuGet Gallery获取此“Microsoft.AspNet.WebPages.WebData”。

答案 2 :(得分:5)

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

using WebMatrix.Data;

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

目前尚不清楚为什么你认为你不需要任何“导入”(我认为你的意思是指使用上面的指令),但如果这是在一个简单的C#文件中,那么你当然做< / em>需要它们(或者你需要完全限定类型名称,这很丑陋)。

答案 3 :(得分:0)

在我的情况下,我安装了nugget包,但是没有找到WebMatrix.Data。 问题是我创建了一个新项目,而我刚创建了一个网站(文件/ new / WEBSITE ),然后默认找到数据库(我想这是因为我创建的项目类型第一次)

现在工作正常,希望这会对某人有所帮助。