我对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; }
}
}
我得到的两个错误是:
我错过了什么?
答案 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。
答案 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)
如果您的编译器无法识别
确保
在.csproj文件中,您有以下参考
<Reference Include="EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
中的元素
<ItemGroup> ... </ItemGroup>
包含对其他集合的引用。
答案 9 :(得分:3)
这有助于提供便利:
答案 10 :(得分:2)
我刚遇到这个问题,其他解决方案都没有对我有用。我使用的是Visual Studio 2010,我的解决方案中有两个项目:UIProject和DataAccessProject。 UIProject引用了DataAccessProject。
我的UIProject针对的是.Net Framework 4,但我的DataAccessProject出于某种原因瞄准了.Net Framework 3.5。
问题解决了。现在我引用了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)
答案 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)
像其他人一样建议:
看看下面,看看你能告诉我出了什么问题:
public class PanelLengthContext : DBContext { }
??!
DbContext
是正确的拼写。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安装实体框架