找不到类型或命名空间名称"DbContext"

Chr*_*ris 141 asp.net-mvc entity-framework visual-studio-2010 visual-studio asp.net-mvc-3

我是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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的两个错误是:

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

我错过了什么?

Sha*_*haz 199

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

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

它也是如何在MVC中使用实体框架代码优先的有用示例.

  • 您最好的选择是使用NuGet(包管理器)将Entity Framework(等)拉入您的项目中. (23认同)
  • 这是我的经历; 即使vs2010软件包管理器声称我安装了4.2.0.0,但4.2.0.0的EntityFramework.dll不存在.我的项目在vs2010中打开,通过Tools,Library Package Manager运行[install command](http://nuget.org/packages/EntityFramework/4.2.0.0),Package Manager Console自动添加对**EntityFramework**的引用我的后续构建成功了.thnx @Shahzad! (7认同)
  • 谢谢你的帮助.我希望微软有一天能够更轻松地在他们的Windows上安装自己的软件!令人惊讶的是,有多少地方需要去了解需要什么以及它们如何组合在一起.NuGet,MS下载网站,留言板,书籍......确实非常富有成效. (6认同)
  • 有时您需要重新启动visual studio才能使安装正常进行.这是我的情况. (2认同)
  • 打开包管理器控制台并粘贴:Install-Package EntityFramework (2认同)

Dar*_*rov 67

您需要将System.Data.Entityassebmly 引用到您的项目或安装EntityFrameworkNuGet包,它将为您设置一切.

  • @Chris Dickinson,右键单击项目中的`References`项,然后选择`Add Reference ...`.然后在`.NET`选项卡中,选择`System.Data.Entity`.如果你想使用NuGet,右键单击`References`项,然后选择`Add Library Package Reference ...`,然后在Online选项卡中搜索`EntityFramework`. (11认同)
  • 我在VS2012中选择了"TOOLS>库包管理器>包管理器控制台",并在提示符下键入了"install-package EntityFramework".工作得很完美. (7认同)
  • 您是否使用NuGet来安装EntityFramework?它会在您的Solution目录旁边创建一个文件夹"packages".你会在其中找到"EntityFramework.4.1.10331.0"文件夹.在"Libs"文件夹中你会找到"EntityFramework.dll".使用"浏览"选项卡添加对它的引用并选择上面的dll.看下面的答案..我做了同样的事. (3认同)
  • 我按照你的步骤操作了,但是问题依然存在... (2认同)

小智 14

快速说明一下.它是DbContext,而不是DBContext.即小写'B'.我发现这一点,因为我必须同时intelesense没有工作,直到我试图输入完整的命名空间System.Data.Entity的......和名称同样的问题,最后它建议小写字母"B"选项: -

System.Data.Entity.DbContext


cab*_*ab0 9

我使用VS2010时遇到了同样的问题.我知道这不是一个真正的答案.我只是觉得它可能对某人有帮助.我通过使用DBContext的完全限定名称解决了它.

代替

public class MachineDbContext : DbContext
Run Code Online (Sandbox Code Playgroud)

我用了

public class MachineDbContext : System.Data.Entity.DbContext
Run Code Online (Sandbox Code Playgroud)

并重建了该项目.突然VS很高兴,我甚至能够删除完全限定的名称,只使用DBContext.


Fel*_*ner 7

我遇到了同样的问题......从Package Manager Console安装EF对我有用

命令是: Install-Package EntityFramework


use*_*226 5

如果你的编译器无法识别

  • 系统.数据.实体.基础设施
  • 数据库上下文
  • 数据库集
  • 等人,

确保

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

    <Reference Include="EntityFramework、Version=4.1.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089、processorArchitecture=MSIL"/>
    

    元素内

    <项目组>
      ...
    </项目组>
    

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