无法findtypes或名称空间名称“DbContext”

我是非常新的ASP.NET MVC(3),我很难在Visual Studio中解决构build错误:

无法findtypes或名称空间名称“DbContext”(您是否缺lessusing指令或程序集引用?)

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; } } } 

我得到的两个错误是:

  • 无法findtypes或名称空间名称“DbContext”(您是否缺lessusing指令或程序集引用?)
  • 无法findtypes或名称空间名称“DbSet”(您是否缺less使用指令或程序集引用?)

我错过了什么?

我遇到过同样的问题。 原来,你需要EntityFramework.dll引用(而不是System.Data.Entity)。

我只是从MvcMusicStore应用程序,它可以从下载: http ://mvcmusicstore.codeplex.com/

这也是如何使用entity framework代码 – 首先与MVC的一个有用的例子。

您需要将System.Data.Entity引用到您的项目中,或者安装EntityFramework NuGet包,它将为您设置所有内容。

我有使用VS2010相同的问题。 我知道这不是一个真正的答案。 我只是认为这可能会帮助别人。 我通过使用DBContext的完全限定名来解决它。

代替

 public class MachineDbContext : DbContext 

我用了

 public class MachineDbContext : System.Data.Entity.DbContext 

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

只是一个简短的说明。 它是DbContext,而不是DBContext。 即小写字母“B”。 我发现这一点,因为我有同样的问题,而intelesense不工作,直到我尝试input全名空间System.Data.Entity …和名称,最后它build议小写'b'选项: –

System.Data.Entity.DbContext

我有同样的问题…从包pipe理器控制台安装EF为我工作

命令是: Install-Package EntityFramework

我有同样的问题..我有VS2010expression..

(注意:如果你看到这个问题,请尝试检查对EntityFramework.dll的引用。可能是缺less。)

下面为我​​解决了它。

我安装了最新的MVC 3工具更新
然后我安装了EntityFramework 4.1
或者使用NUGet即。 从Visual Studio 2010 Express(Tools-> Library Package Manager – > Add library Package reference – > Select Online – > EntityFramework)

奇怪的是没有工作..所以我不得不手动添加一个引用“EntityFramework.dll”
尝试search的DLL ..可能在这里
“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \”

如果你已经有了它,只需添加一个'.net'参考。

注意:如果您使用NuGet,它会在您的解决scheme目录旁边创build一个“包”文件夹。 你会发现它里面的“EntityFramework.4.1.10331.0”文件夹。在“Libs”文件夹,你会发现“EntityFramework.dll”。
使用“浏览”选项卡添加引用,并select上面的dll。

对齐相同

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

如果你的编译器不能识别

  • System.Data.Entity.Infrastructure
  • 的DbContext
  • DbSet
  • et alii,

确保

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

     <Reference Include =“EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089,processorArchitecture = MSIL”/>
    

    元素内

     <的ItemGroup>
       ...
     </的ItemGroup>
    

    那里有其他程序集的引用。

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

这真的很方便:

  1. 在解决scheme资源pipe理器中selectProjectNAme项目。
  2. 从工具菜单中,select包含子菜单的库包pipe理器。
  3. 从子菜单中select程序包pipe理器控制台。
  4. 在控制台的PM提示符下inputinstall-package EntityFramework,然后按回车。

Visual Studio Express SP1右键单击解决scheme资源pipe理器>引用>添加库包参考> EntityFramework

使用CTP5反而是API的一些变化的更新的版本。 您必须添加对CTP目录中安装的EntityFramework.dll的引用 – 默认为:32位系统的c:\ Program Files \ Microsoft ADO.NETentity frameworkfunctionCTP5 \ Binaries \ EntityFramework.dll。 在64位系统上,它将被放置在Program Files(x86)中。

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

我刚刚有这个问题,没有其他解决scheme为我工作。 我正在使用Visual Studio 2010,我的解决scheme中有两个项目:UIProject和DataAccessProject。 UIProject有对DataAccessProject的引用。

我的UIProject是针对.Net Framework 4,但我的DataAccessProject针对.Net Framework 3.5出于某种原因。

  • 我将这两个项目都改为了.Net Framework 4
  • 卸载然后重新安装entity frameworkNuGet包。

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

我有同样的问题。我添加引用entityframework后,必须重写“DBContext”,它解决了这个问题。
这意味着Visual Studio无法自动识别该类,并等待它重新input。 所以最好先添加引用,然后再实现代码。 VS 2013 – 最终使用

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

您的项目无法parsingEntityFramework类,直到您没有将其添加到项目中。 要添加EntityFramework支持,你必须按照下面的步骤:工具 – > Nuget包pipe理器 – >pipe理Nuget包的解决scheme浏览EntityFramework它显示最新的稳定的EntityFramework版本。 目前6.1.3是最新版本安装它为选定的项目。

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

使用System.Data.Entity;

我正在使用Visual Studio 2010 SP1安装

引用了entityframework.dll都system.data.entity工作。

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

我不小心把…

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

在模型类里面

作为替代方法,你可以去这里 – 指导如何安装任何所需的DLL。

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

右键点击你的参考,然后去pipe理NuGet软件包,然后select在线全部,然后在search文本框中inputNuGet软件包源typesentity framework并安装它。

1)从所有项目中卸载entity framework

2)重新启动Visual Studio

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

开始工作

有些情况下你可以引用你需要的所有东西,你甚至可以通过按DbContext类的F12来转到定义,该类将你带到System.Data.Entity命名空间,但是你仍然会得到这个令人讨厌的编译器警告。 确保您的项目的目标框架和您使用的entity framework版本的目标框架匹配。 进入项目 – >属性 – >应用程序选项卡。 更改目标框架(不能准确地说,哪一个,试验和错误将有所帮助)。 只是我的两分钱。

我也很烦恼这个问题很多次,最后find解决办法。转到EDMX文件 – >更新模型从数据库 – >刷新 – >完成。 清洁解决scheme – >重build解决scheme

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

将其粘贴到(对于x86)

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

然后右键点击项目 – >添加引用 – >selectEntityFramework

答对了……

你可以试试包pipe理器控制台

PM> EntityFrameWork \ enable-migrations

VS2017,EF6,closures解决scheme。 重新打开解决scheme。 它现在正确识别DbContext。