【问题标题】:The name 'Database' does not exist in the current context?当前上下文中不存在名称“数据库”?
【发布时间】:2012-03-21 18:35:14
【问题描述】:

当我尝试使用 WebMatrix 启动我的网站时出现此错误。我有一个调用var db = Database.Open("dbase"); 的.cs 文件。

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

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

【问题讨论】:

    标签: c# sql sql-server razor webmatrix


    【解决方案1】:

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

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

    【讨论】:

    • 就我而言,我的站点 bin 文件夹中已经有了 WebMatrix.Data.dll 文件。这可能是因为对 WebMatrix 进行了更新。无论哪种方式,很高兴知道它应该位于哪里。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      using WebMatrix.Data;
      

      这将导入 Database 类,因此您无需完全限定名称即可使用它。

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

      【讨论】:

      • 非常感谢您的回复!我没有意识到 .cs 文件和其他文件之间的区别。我现在添加了 using 指令(对不正确的术语表示歉意,我是一名尝试学习的 Java 程序员)-我现在收到错误“找不到类型或命名空间名称“WebMatrix”(您是否缺少 using 指令还是程序集参考?)'。我假设我需要引用 WebMatrix.Data.Dll?我该怎么做?
      • @SimonKiely:我自己没有使用过 WebMatrix,但我会认为它已经存在了。如果您的项目中有“项目引用”部分,请查找“添加引用”。
      • 感谢您的回复。我找不到这样的参考。我不相信我应该需要这个;它应该在那里,并且代码在 .cshtml 文件中工作。我很困惑。
      • @SimonKiely:你肯定应该需要一个参考(和一个 using 指令),但我很惊讶它没有为你提供。您是否在其他任何地方发现了任何参考列表的迹象? (mscorlib、System.Data、System、System.Core 等)
      • 创建一个名为 App_Code 的文件夹并将您的 .cs 文件放入其中。然后再试一次。
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-02
        • 2014-04-22
        • 2017-06-17
        • 2015-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多