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

时间:2011-04-21 07:49:10

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

我对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'(是 你错过了使用指令或 装配参考?)
  • 类型或命名空间名称'DbSet' 找不到(是你吗? 缺少使用指令或 装配参考?)

我错过了什么?

30 个答案:

答案 0 :(得分:195)

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

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

它也是如何使用实体框架代码优先使用MVC的一个有用示例。

答案 1 :(得分:64)

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

答案 2 :(得分:13)

快速说明一下。它是DbContext,而不是DBContext。即小写'B'。我发现这是因为我有同样的问题,而intelesense没有工作,直到我尝试输入全名空间System.Data.Entity ...和名称,最后它建议小写'b'选项: -

System.Data.Entity.DbContext

答案 3 :(得分:9)

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

而不是

public class MachineDbContext : DbContext

我用过

public class MachineDbContext : System.Data.Entity.DbContext

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

答案 4 :(得分:7)

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

命令是:Install-Package EntityFramework

答案 5 :(得分:4)

我有同样的问题..我有VS2010表达..

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

以下为我解决了这个问题。

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

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

如果您已经拥有它..只需添加'.net'参考。

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

Snap for the same

答案 6 :(得分:4)

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

答案 7 :(得分:3)

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

答案 8 :(得分:3)

如果您的编译器无法识别

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

确保

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

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

    中的元素

    <ItemGroup>
      ...
    </ItemGroup>
    

    包含对其他集合的引用。

答案 9 :(得分:3)

这有助于提供便利:

  1. 在解决方案资源管理器中选择ProjectNAme项目。
  2. 从“工具”菜单中,选择“库包管理器”,其中包含 子菜单。
  3. 从子菜单中选择Package Manager Console。
  4. 在控制台的PM提示符下键入install-package EntityFramework 点击进入。

答案 10 :(得分:2)

我刚遇到这个问题,其他解决方案都没有对我有用。我使用的是Visual Studio 2010,我的解决方案中有两个项目:UIProject和DataAccessProject。 UIProject引用了DataAccessProject。

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

  • 我将两个项目都改为目标.Net Framework 4
  • 卸载然后重新安装Entity Framework NuGet Package。

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

答案 11 :(得分:2)

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

将其粘贴(适用于x86)

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

然后右键点击项目 - &gt;添加参考 - &gt;选择EntityFramework

宾果......

答案 12 :(得分:2)

您的项目无法解析EntityFramework类,直到您未在项目中添加它。  要添加EntityFramework支持,您必须执行以下步骤: 工具 - &gt; Nuget包管理器 - &gt;管理Nuget包以获得解决方案 浏览EntityFramework 它显示了最新的稳定EntityFramework版本。 目前6.1.3是最新版本 为所选项目安装它。

答案 13 :(得分:2)

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

答案 14 :(得分:2)

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

答案 15 :(得分:2)

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

答案 16 :(得分:2)

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

答案 17 :(得分:2)

Visual Studio Express SP1 右键单击解决方案资源管理器&gt;参考文献&gt;添加库包参考&gt;的EntityFramework

答案 18 :(得分:1)

右键单击您的引用并转到管理NuGet包,然后选择online all,然后在搜索文本框中键入Entity Framework中的NuGet包源并安装它。

答案 19 :(得分:1)

我遇到了同样的错误,但问题只是我模型的偶然问题。

我不小心把...

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

...在模型类中。

答案 20 :(得分:1)

作为替代方式,您可以HERE - 指示如何安装任何所需的dll。

或者您可以下载NuGet并从VS

进行管理

答案 21 :(得分:1)

引用了entityframework.dll,system.data.entity都有效。

答案 22 :(得分:1)

1)从所有项目

卸载实体框架

2)重新启动Visual Studio

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

它开始工作

答案 23 :(得分:1)

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

使用System.Data.Entity;

我正在使用Visual Studio 2010,SP1安装

答案 24 :(得分:1)

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

答案 25 :(得分:1)

我也多次对此问题感到恼火,最后找到解决方案。转到edmx文件 - >从数据库更新模型 - &gt;刷新 - >完成。 清洁解决方案 - &gt;重建解决方案

答案 26 :(得分:0)

您可以尝试使用包管理器控制台

PM&GT;的EntityFramework \启用的迁移

答案 27 :(得分:0)

像其他人一样建议:

  1. 添加正确的引用和指令。但它仍然不起作用?也许你遇到了同样的问题:
  2. 看看下面,看看你能告诉我出了什么问题:

    public class PanelLengthContext : DBContext { } ??!

    确保类名不是拼写错误 - (区分大小写)!

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

    HTH

答案 28 :(得分:0)

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

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

答案 29 :(得分:0)

我遇到了同样的问题,然后我添加了命名空间

using Practiceusingentityframework.Models;

添加后工作正常

尝试这可以帮助您解决问题

之前和之前从Nuget Manager安装实体框架