通过NuGet安装Entity Framework 6未生成引用、App.config且代码编译报错
问题根因定位
你遇到的NuGet装包后无引用、无配置文件生成,以及两个编译报错的问题,本质是EF6包没有被成功安装到目标项目,和VS2019与教程使用的VS2015版本差异无直接关联。
常见踩坑点排查
- NuGet安装时的项目选择错位
打开NuGet包管理器界面时,顶部的「默认项目」下拉选项如果没有明确选中NinjaDomain.DataModel,而是选成了解决方案根节点、或其他无关项目(比如解决方案里的启动控制台项目),NuGet会把EF6包安装到其他项目上,完全不会给目标项目添加引用、生成配置文件,自然会触发找不到System.Data.Entity命名空间、找不到DbContext类型的编译错误。 - 错装为EF Core包
EF6和EF Core是完全独立的两款产品,命名空间体系完全不同: - EF6的核心命名空间是
System.Data.Entity,DbContext类就定义在这个命名空间下,和教程中的代码完全匹配 - EF Core的核心命名空间是
Microsoft.EntityFrameworkCore,哪怕把EF Core装到了正确的项目里,也会触发和你当前遇到的CS0234、CS0246完全一致的报错。
正确操作步骤(适配VS2019)
- 右键点击
NinjaDomain.DataModel项目,选择「管理NuGet程序包」,确保当前打开的NuGet界面是直接针对该项目打开的,从根源上避免项目选择错位的问题 - 切换到「浏览」标签页,搜索
EntityFramework,选择官方发布的EF 6.x版本包(不要选择带Core标记的包) - 确认安装参数后点击安装,等待安装完成后检查两个验证项:
- 项目的「依赖项」->「包」节点下能看到EntityFramework条目
- 项目引用列表中能看到
EntityFramework.dll、EntityFramework.SqlServer.dll两个程序集
- 回到代码文件,之前标红的
System.Data.Entity、DbContext的波浪线会自动消失,项目会自动生成对应的App.config配置文件,和教程演示的效果完全一致。
注意:如果你的
NinjaDomain.DataModel项目选择的是.NET Core/.NET 5+作为目标框架,安装EF6时可能会出现包兼容警告,建议和教程保持一致,选择.NET Framework 4.6及以上版本作为类库的目标框架,避免不必要的运行时问题。
快速校验生效状态
安装完成后,把光标放在代码里的using System.Data.Entity;语句上,如果VS的智能提示能识别到该命名空间、没有红色标记,就说明配置已经正确,可以继续跟着教程流程操作。
内容的提问来源于stack exchange,提问作者Suppy Five
相关产品推荐
相关产品推荐

