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

C# 名称';数据库';在当前上下文中不存在?,c#,sql,sql-server,razor,webmatrix,C#,Sql,Sql Server,Razor,Webmatrix,当我尝试使用WebMatrix启动我的网站时,我遇到了这个错误。我有一个.cs文件,它调用var db=Database.Open(“dbase”) 我的项目中有一个名为“dbase”的数据库。我没有web.config文件,也没有用于使用WebMatrix软件包的导入,因为我使用WebMatrix启动网站,所以我认为我不需要它们。我是否需要将代码包装在Razor标记中,比如@{var db=Database.Open(“dbase”);}?这也给我带来了一个错误 这可能是什么原因造成的?有人对

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

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


这可能是什么原因造成的?有人对此有任何解决方案吗?

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

using WebMatrix.Data;
这将导入类,以便您可以在不完全限定名称的情况下使用它


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

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

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

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

如果您不确定从何处获取它,您可以让WebMatrix使用启用数据库的模板(例如Bakery)创建一个新项目,并将其从该项目的bin文件夹中取出。或者,您可以在硬盘上搜索该文件。我在
C:\Program Files\Microsoft ASP.NET\ASP.NET网页\v2.0\Assemblies
中有一份副本

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

对于一个需要长期维护的站点来说,这是一个坏主意,但是为了演示的目的,您只需要使用WebMatrix.Data添加
@到产品页面的顶部。结果应该是这样的:

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

现在它应该能识别符号“Database”,一切都会好起来的。

你只需要从NuGet Gallery获得这个“Microsoft.AspNet.WebPages.WebData”。

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


现在它工作正常,希望这将有助于某人。

非常感谢您的回复!我没有意识到.cs文件和其他文件之间的区别。我现在添加了using指令(对于不正确的术语表示歉意,我是一名Java程序员,正在尝试学习)-我现在收到错误“找不到类型或命名空间名称“WebMatrix”(您是否缺少using指令或程序集引用?)。我想我需要引用WebMatrix.Data.Dll?“我怎么能做到这一点?”西蒙基利:我自己还没有用过WebMatrix,但我原以为它已经在那里了。如果您的项目中有“项目参考”部分,请查找“添加参考”。感谢您的回复。我找不到这样的推荐信。我不认为我需要这个;它应该在那里,代码在.cshtml文件中工作。我很困惑。@SimonKiely:您肯定需要一个引用(和一个使用指令),但我很惊讶它没有提供给您。你有没有在其他地方找到参考文献列表的迹象?(mscorlib、System.Data、System、System.Core等)创建一个名为App_Code的文件夹,并将.cs文件放在其中。然后再试一次。在我的情况下,我的站点bin文件夹中已经有了WebMatrix.Data.dll文件。这可能是因为对WebMatrix进行了更新。不管怎样,知道它应该在哪里都很好。