【问题标题】:The type or namespace name 'DbContext' could not be found [closed]找不到类型或命名空间名称“DbContext”[关闭]
【发布时间】:2011-08-10 02:41:04
【问题描述】:

我对 ASP.NET MVC (3) 非常陌生,并且很难解决 Visual Studio 中的构建错误:

找不到类型或命名空间名称“DbContext”(您是否缺少 using 指令或程序集引用?)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace MyProjectName.Models
{   
    public class MachineModel
    {
        // name
        [Required]
        [Display(Name = "Nom de la machine")]
        public string Name { get; set; }

        // IP
        [Required]
        [RegularExpression(@"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",
           ErrorMessage = "Donnez une adresse IPv4 valide.")]
        [Display(Name = "Adresse IP de la machine")]
        public string IP { get; set; }
    }

    public class MachineDbContext : DbContext
    {
        public DbSet<MachineModel> Machines{ get; set; }
    }
}

我得到的两个错误是:

  • 类型或命名空间名称 找不到“DbContext”(是 您缺少 using 指令或 程序集参考?)
  • 类型或命名空间名称“DbSet” 找不到(你是 缺少 using 指令或 程序集参考?)

我错过了什么?

【问题讨论】:

  • 您是否使用 NuGet 添加了实体框架代码优先参考?这可能是解决引用的最简单方法。
  • 好的。 - 在解决方案资源管理器树下,我右键单击参考 -> 添加库包参考 -> EFCodeFirst -> 安装。这是你建议的吗?完成这些步骤后,我仍然遇到同样的问题。
  • 我同时将 MVC 3 Tools 更新到了最新版本,并在asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs 之后创建了一个教程项目。在那个项目中,我没有这个问题,但我无法让 DbContext 在我的旧项目中被接受,尽管在这里和下面的 Darin 提出了建议......
  • VS2017,EF6,关闭解决方案。重新打开解决方案。它现在可以正确识别 DbContext。
  • 打开包管理器控制台。选择工具 > NuGet 包管理器 > 包管理器控制台。在包管理器控制台中,输入以下命令: install-package EntityFramework

标签: asp.net-mvc visual-studio-2010 asp.net-mvc-3 visual-studio entity-framework


【解决方案1】:

您需要在项目中引用System.Data.Entity 程序集,或者 安装EntityFramework NuGet 包,它将为您设置一切。

【讨论】:

  • 达林,你能解释一下如何做到这一点吗?
  • @Chris Dickinson,右击项目中的References项,选择Add Reference...。然后在.NET 选项卡中,选择System.Data.Entity。如果您想使用 NuGet,请右键单击 References 项目,然后选择 Add Library Package Reference... 并在“在线”选项卡中搜索 EntityFramework
  • 我按照您的两个步骤操作,但问题仍然存在...
  • 您是否使用 NuGet 来安装 EntityFramework?它会在您的解决方案目录旁边创建一个文件夹“packages”。您将在其中找到“EntityFramework.4.1.10331.0”文件夹。在“Libs”文件夹中,您将找到“EntityFramework.dll”。使用“浏览”选项卡添加对它的引用并选择上面的 dll。请参阅下面的答案.. 我也这样做了。
  • 我在VS2012中选择了TOOLS &gt; Library Package Manager &gt; Package Manager Console,在提示符下输入了install-package EntityFramework。完美运行。
【解决方案2】:

我和你有同样的问题,当我把它放在模型类中时,我无法在 Controller 类中实现它。在控制器类的顶部添加这些代码

 using TimeSheetManagementSystem.Data;
 using Microsoft.Extensions.Configuration;
 using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore;
 using Newtonsoft.Json;

【讨论】:

    【解决方案3】:

    就像其他人建议的那样:

    1. 添加正确的引用和指令。但是还是不行?也许你遇到了和我一样的问题:

    看看下面,看看你能不能告诉我哪里出了问题:

    public class PanelLengthContext : DBContext { }??!

    确保类名没有拼错 - (区分大小写)!

    • DbContext 是正确的拼写。
    • 应该是这样的:
    • 检查拼写。不要像我一样浪费你生命中的 20 分钟。 public class PanelLengthContext : DbContext {}

    HTH

    【讨论】:

      【解决方案4】:

      下载http://www.dll-found.com/download/e/EntityFramework.dll

      粘贴(对于 x86)

      C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\
      

      然后右键点击项目->添加引用->选择EntityFramework

      宾果游戏......

      【讨论】:

        【解决方案5】:

        您可以在包管理器控制台上尝试

        PM> EntityFrameWork\enable-migrations

        【讨论】:

          【解决方案6】:

          您的项目无法解析 EntityFramework 类,除非您未将其添加到项目中。 要添加 EntityFramework 支持,您必须执行以下步骤: 工具 -> Nuget 包管理器 -> 管理 Nuget 包以获取解决方案 浏览实体框架 它显示了最新的稳定 EntityFramework 版本。 目前 6.1.3 是最新版本 为选定的项目安装它。

          【讨论】:

            【解决方案7】:

            我也多次被这个问题激怒,终于找到了解决方案。转到 edmx 文件->从数据库更新模型->刷新->完成。 清洁解决方案->重建解决方案

            【讨论】:

              【解决方案8】:

              在某些情况下,您可能会引用所需的所有内容,甚至可以通过在 DbContext 类上按 F12 来转到定义,这会将您带到 System.Data.Entity 命名空间,但您仍然会收到这个讨厌的编译器警告。确保您的项目的目标框架和您使用的实体框架版本匹配。转到项目-> 属性-> 应用程序选项卡。更改目标框架(不能确切地说是哪一个,反复试验会有所帮助。)。只是我的两分钱。

              【讨论】:

                【解决方案9】:

                我必须先卸载 EntityFramework(Uninstall-package EntityFramework (显然不区分大小写)),然后通过 PM 控制台再次安装(Install-package EntityFramework)

                【讨论】:

                  【解决方案10】:

                  我遇到了同样的问题...从包管理器控制台安装 EF 对我有用

                  命令是:Install-Package EntityFramework

                  【讨论】:

                    【解决方案11】:

                    1) 从所有项目中卸载 Entity Framework

                    2) 重启 Visual Studio

                    3) 重新安装到所有需要的项目

                    并且它开始工作了

                    【讨论】:

                      【解决方案12】:

                      右键单击您的参考并转到管理 NuGet 包,然后选择在线全部,然后在搜索文本框中输入 NuGet 包源并安装它。

                      【讨论】:

                        【解决方案13】:

                        这真的很方便:

                        1. 在解决方案资源管理器中选择 ProjectNAME 项目。
                        2. 从工具菜单中,选择库包管理器,它有一个 子菜单。
                        3. 从子菜单中选择 Package Manager Console。
                        4. 在控制台的 PM 提示符下键入 install-package EntityFramework 然后 按回车键。

                        【讨论】:

                          【解决方案14】:

                          作为替代方法,您可以转到 HERE - 说明如何安装任何所需的 dll。

                          或者你可以下载NuGet并从VS管理它

                          【讨论】:

                            【解决方案15】:

                            我遇到了同样的问题。在添加对实体框架的引用后,我不得不重写“DBContext”,它解决了问题。
                            这意味着 Visual Studio 无法自动识别该类并等待它被重新输入。 所以最好先添加引用,然后再实现代码。 VS 2013 - 最终使用

                            【讨论】:

                              【解决方案16】:

                              我刚遇到这个问题,其他解决方案都不适合我。我正在使用 Visual Studio 2010,我的解决方案中有两个项目:UIProject 和 DataAccessProject。 UIProject 具有对 DataAccessProject 的引用。

                              我的 UIProject 以 .Net Framework 4 为目标,但我的 DataAccessProject 由于某种原因以 .Net Framework 3.5 为目标。

                              • 我将两个项目都更改为面向 .Net Framework 4
                              • 卸载然后重新安装实体框架 NuGet 包。

                              问题解决了。现在我引用了 EntityFramework 和 System.Data.Entity

                              【讨论】:

                                【解决方案17】:

                                当我分支代码时,这发生在我身上。为了修复它,我在 Visual Studio 中右键单击我的项目,选择管理 Nu-get 包,卸载 EntityFramework,然后重新安装它。问题解决了

                                【讨论】:

                                  【解决方案18】:

                                  我有同样的错误,但问题只是我的模型的一个意外问题。

                                  我不小心放了……

                                  public class MyModelDBContext : Context
                                  {
                                   public DBSet<MyModel> MyModels { get; set; }
                                  }
                                  

                                  ...在模型类内部。

                                  【讨论】:

                                  • 那 3 行实际上在课堂上?
                                  【解决方案19】:

                                  在 system.data.entity 中都引用了 entityframework.dll。

                                  【讨论】:

                                    【解决方案20】:

                                    我正在使用 Visual Studio 2010 express 并添加对 C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll 的引用解决了这个问题。

                                    【讨论】:

                                      【解决方案21】:

                                      我遇到了这个问题,阅读上面的答案并下载 entityframework.ddl 但发现它已被引用。所以我添加了命名空间,问题就解决了

                                      使用 System.Data.Entity;

                                      我使用的是 Visual Studio 2010,已安装 SP1

                                      【讨论】:

                                        【解决方案22】:

                                        只是一个简短的说明。它是 DbContext,而不是 DBContext。即使用小写的“B”。我发现这一点是因为我遇到了同样的问题,而 intelesense 无法正常工作,直到我尝试输入全名空间 System.Data.Entity... 和名称,最后它建议使用小写的“b”选项:-

                                        System.Data.Entity.DbContext

                                        【讨论】:

                                        • 我浏览了有关 System.Data.Entity 的所有参考资料,却发现问题出在大写字母“B”上。 +1
                                        • 是的,这解决了。前提是“Install-Package EntityFramework”步骤已完成。谢谢,+1。
                                        【解决方案23】:

                                        使用CTP5 代替它是更新的版本,API 进行了一些更改。您必须添加对安装在 CTP 目录中的 EntityFramework.dll 的引用 - 对于 32 位系统,默认为:c:\Program Files\Microsoft ADO.NET Entity Framework Feature CTP5\Binaries\EntityFramework.dll。在 64 位系统上,它将被放置在 Program Files (x86) 中。

                                        【讨论】:

                                          【解决方案24】:

                                          我在使用 VS2010 时遇到了同样的问题。 我知道这不是一个真正的答案。我只是认为它可能会帮助某人。 我通过使用 DBContext 的完全限定名称来解决它。

                                          而不是

                                          public class MachineDbContext : DbContext
                                          

                                          我用过

                                          public class MachineDbContext : System.Data.Entity.DbContext
                                          

                                          并重建项目。突然 VS 很高兴,我什至可以删除完全限定名称,而只使用 DBContext。

                                          【讨论】:

                                          • 这对我有用,但我需要完全限定 DbContext 似乎很奇怪,即使 using 语句已经到位。有没有人知道为什么会这样?
                                          【解决方案25】:

                                          Visual Studio Express SP1 右键单击解决方案资源管理器 > 参考 > 添加库包参考 > EntityFramework

                                          【讨论】:

                                            【解决方案26】:

                                            我有同样的问题..我有 VS2010 express..

                                            (注意:如果您看到此问题,请尝试检查对 EntityFramework.dll 的引用 .. 可能是丢失了。)

                                            以下为我解决了它。

                                            我安装了最新的MVC 3 Tools Update
                                            然后我安装了EntityFramework 4.1
                                            或使用 NUGet 即。使用 Visual Studio 2010 Express (工具->库包管理器->添加库包引用->选择在线->EntityFramework)

                                            奇怪的是这不起作用..所以我不得不手动添加对“EntityFramework.dll”的引用
                                            尝试搜索 dll ..可能在这里
                                            "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\"

                                            如果您已经拥有它..只需添加一个“.net”引用。

                                            注意:如果您使用 NuGet,它会在您的解决方案目录旁边创建一个文件夹“packages”。 您将在其中找到“EntityFramework.4.1.10331.0”文件夹。在“Libs”文件夹中,您将找到 "EntityFramework.dll" .
                                            Add reference to it 使用浏览选项卡并选择上面的 dll。

                                            【讨论】:

                                              【解决方案27】:

                                              如果您的编译器无法识别

                                              • System.Data.Entity.Infrastructure
                                              • 数据库上下文
                                              • 数据库集
                                              • 等,

                                              确定

                                              1. 您的机器上安装了 Entity Framework 4.1;
                                              2. 在您的 .csproj 文件中,您有以下参考资料

                                                在元素内

                                                ...

                                                包含对其他程序集的引用。

                                              【讨论】:

                                                【解决方案28】:

                                                我有同样的问题。事实证明,您需要 EntityFramework.dll 引用(而不是 System.Data.Entity)。

                                                我刚刚从 MvcMusicStore 应用程序中提取了它,您可以从以下位置下载它:http://mvcmusicstore.codeplex.com/

                                                这也是如何将实体框架代码优先与 MVC 一起使用的有用示例。

                                                【讨论】:

                                                • 这是我的经验;即使 vs2010 包管理器声称我安装了 4.2.0.0,4.2.0.0 的 EntityFramework.dll 也不存在。在 vs2010 中打开我的项目后,通过工具、库包管理器、包管理器控制台运行 install command,自动添加了对 EntityFramework 的引用,我的后续构建成功。谢谢@Shahzad!
                                                • 感谢您的帮助。我希望微软有一天能让在他们的 Windows 上安装他们自己的软件更容易!令人惊讶的是,一个人必须去多少地方才能弄清楚需要什么以及它们如何组合在一起。 NuGet、MS 下载站点、留言板、书籍……确实是非常高效的时间。
                                                • 最好的办法是使用 NuGet(包管理器)将实体框架(等)拉入您的项目。
                                                • 有时您需要重新启动 Visual Studio 才能进行安装。这是我的情况。
                                                • 打开包管理器控制台并粘贴:Install-Package EntityFramework
                                                【解决方案29】:

                                                有关分步说明,请参阅这个新的 MVC/EF 教程系列: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application 本教程假设您已安装最新的 MVC 3 工具更新,并提供一个链接以防您尚未安装。

                                                【讨论】:

                                                  猜你喜欢
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 2020-04-13
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 2017-07-12
                                                  • 2011-05-13
                                                  • 2013-03-25
                                                  相关资源
                                                  最近更新 更多