“Database”名称在当前上下文中不存在?

7
当我尝试使用WebMatrix启动我的网站时,出现了这个错误。我有一个.cs文件,在其中调用var db = Database.Open("dbase");
我的项目中有一个名为“dbase”的数据库。由于我是使用WebMatrix启动网站,因此没有web.config文件和没有导入WebMatrix包,所以我认为我不需要它们。我需要将代码包装在Razor标记中,例如@{var db = Database.Open("dbase"); }吗?对我来说,这也会导致错误。
是什么原因导致了这个问题?有人对此有解决方案吗?
4个回答

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

7

我在学习ASP.NET的w3schools内容时遇到了这个问题。

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

首先,将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"; 
}

现在它应该能够识别“数据库”这个符号,一切都会好起来的。

在我的情况下,我已经在我的网站bin文件夹中拥有了WebMatrix.Data.dll文件。这可能是由于对WebMatrix进行的更新。无论如何,知道它应该位于哪里还是很好的。 - VoidKing

6
您需要引用 WebMatrix.Data.dll 程序集(您可能已经有了),并且还需要为 WebMatrix.Data 命名空间添加 using 指令:
using WebMatrix.Data;

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

如果这是一个普通的C#文件,那么为什么您认为不需要任何“导入”(我假设这意味着像上面那样使用指令)并不清楚,但是您肯定需要它们(或者您需要完全限定类型名称,这很丑陋)。


非常感谢您的回复!我之前没有意识到.cs文件和其他文件之间的区别。现在我已经添加了using指令(抱歉使用了不正确的术语,我是一名Java程序员正在学习)-但是我现在遇到了错误:“找不到类型或命名空间名称'WebMatrix'(是否缺少using指令或程序集引用?)”。我猜我需要引用WebMatrix.Data.Dll?我该怎么做? - Simon Kiely
@SimonKiely:我自己没有使用过WebMatrix,但我认为它应该已经存在了。如果你的项目中有“项目引用”部分,请查找“添加引用”。 - Jon Skeet
感谢您的回复。我找不到这样的参考资料。我不认为我应该需要这个;它应该在那里,并且代码在.cshtml文件中可以工作。我非常困惑。 - Simon Kiely
@SimonKiely:你肯定需要一个引用(和一个using指令),但我很惊讶它没有为你提供。你在其他地方找到任何引用列表的迹象了吗?(mscorlib,System.Data,System,System.Core等) - Jon Skeet
创建一个名为App_Code的文件夹,并将您的.cs文件放入其中。然后再试一次。 - Mike Brind
你好,我遇到了同样的问题,有人知道如何引用WebMatrix.Data.Dll吗? - Aya Abdelsalam

0
在我的情况中,我安装了nugget包,但是它找不到WebMatrix.Data。 问题是,我创建了一个新项目,而不是创建一个网站(文件/新建/网站),然后默认情况下可以找到数据库(我猜这是因为第一次创建的项目类型)。
现在一切正常了,希望这能帮助到别人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接