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

我是 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” 找不到(你是否 缺少使用指令或 汇编引用?)

我错过了什么?

308630 次浏览

您需要在项目中引用 System.Data.Entity程序集,或者 安装 EntityFramework NuGet 软件包,它将为您安装所有东西。

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

我也遇到了同样的问题。结果是,您需要 EntityFramework.dll 引用(而不是 System.Data.Entity)。

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

这也是如何在 MVC 中使用实体框架代码优先的一个有用的例子。

如果您的编译器不能识别

  • 系统、数据、实体、基础设施
  • DbContext
  • DbSet
  • 等等,

确认一下

  1. 您的机器上安装了实体框架4.1;
  2. 在您的. csproj 文件中,有以下引用

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

    在元素之内

    <ItemGroup>
    ...
    </ItemGroup>
    

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

我有同样的问题. . 我有 VS2010快递. 。

(注意: 如果您看到这个问题,请尝试检查对 EntityFramework.dll 的引用..。 也许它不见了。)

接下来的事情帮我解决了。

我安装了最新的 MVC 3工具更新
然后我安装了 EntityFramework 4.1
或使用 来自 VisualStudio2010 Express 的 NUGIE.from (Tools-> Library Package Manager-> Add Library Package reference-> Select Online-> EntityFramework)

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

如果你已经有了. . 只需添加一个’.net’引用。

注意: 如果您使用 NuGet,它会在您的解决方案目录旁边创建一个文件夹“包”。 您将在其中找到“ EntityFramework. 4.1.10331.0”文件夹 “ EntityFramework. dll”。
使用 Browse 选项卡添加对它的引用 并选择上面的 dll。

Snap for the same

Visual Studio Express SP1 右击解决方案资源管理器 > 引用 > 添加库包引用 > EntityFramework

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

而不是

public class MachineDbContext : DbContext

我用过

public class MachineDbContext : System.Data.Entity.DbContext

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

取而代之的是使用 CTP5,它是一个新版本,在 API 方面有一些变化。你必须添加对 EntityFramework.dll 的引用,它安装在 CTP 目录中——默认值是: c: Program Files 微软 Entity Framework Feature CTP5 Binaries EntityFramework.dll for 32 bit system。在64位系统上,它将被放置在 Program Files (x86)中。

就说一句。它是 DbContext,而不是 DBContext。即小写的“ B”。我之所以发现这个问题,是因为我遇到了同样的问题,而 Intelesense 在我尝试键入全名空间 System 之前并不能正常工作。百科。实体... 和名称,最后它建议小写的“ b”选项:-

System. Data. Entity.DbContext

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

使用 System.Data.Entity;

我正在使用 VisualStudio2010,SP1安装

我使用 VisualStudio2010快递并添加了一个参考 C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll解决了这个问题。

引用 entityframework.dll 后,System.data.tity 都工作了。

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

命令是: Install-Package EntityFramework

我有相同的错误,但问题只是一个偶然的问题,我的模型。

我不小心把..。

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

在模特班里。

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

我只是有这个问题,没有其他的解决办法适合我。我正在使用 VisualStudio2010,并且在我的解决方案中有两个项目: UIProject 和 DataAccessProject。UIProject 具有对 DataAccessProject 的引用。

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

  • 我将两个项目都更改为 target.NetFramework4
  • 卸载然后重新安装实体框架 NuGet 包。

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

右键单击你的参考文献,去管理 NuGet 软件包,然后选择在线所有,然后在搜索文本框中的 NuGet 软件包源代码类型 Entity Framework 并安装它。

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

作为替代方法,你可以去 给你-指示如何安装任何所需的 dll。

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

这真的很方便:

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

1)从 全部项目卸载实体架构

2)重新启动 VisualStudio

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

开始起作用了

我必须首先卸载 EntityFramework (卸载软件包 EntityFramework (显然不区分大小写)) ,然后通过 PM 控制台再次安装它(安装软件包 EntityFramework)

可能有这样一种情况,即您引用所需的所有内容,甚至可以通过在 DbContext 类上按 F12键转到 Definition,从而转到 System。百科。实体名称空间,但您仍然会收到这个讨厌的编译器警告。确保项目的目标框架与所使用的实体框架版本的目标框架匹配。转到 Project-> Properties-> Application Tab。改变目标框架(不能确切地说是哪一个,尝试和错误将有所帮助。).只有我的意见。

我也曾多次因为这个问题而恼火,最终找到了解决方案。 清洁解决方案-> 重建解决方案

在项目中没有添加 EntityFramework 类之前,项目无法解析 EntityFramework 类。 要添加 EntityFramework 支持,您必须遵循以下步骤: 工具-> Nuget 软件包管理器-> 为解决方案管理 Nuget 软件包 浏览 EntityFramework 它显示了最新稳定的 EntityFramework 版本。 目前6.1.3是最新版本 为选定的项目安装它。

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

PM > EntityFrameWork 启用-迁移

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

粘贴(x86)

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

然后右转

答对了。

正如其他人所建议的:

  1. 添加正确的引用和指令。但它仍然不起作用吗? 也许你也有同样的问题:

看看下面,看看你能不能告诉我出了什么问题:

public class PanelLengthContext : DBContext { } ??!

确保班名没有拼错(大小写敏感性) !

  • DbContext是正确的拼写。
  • 看起来应该是这样的:
  • 检查拼写。不要像我一样浪费你生命中的20分钟

高温

我和您有同样的问题,我无法在 Controller 类中实现它,而当我把它放到模型类中时,它仍然可以工作。将这些代码添加到控制器类的顶部

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