名称空间'System.Data'中不存在类型或命名空间名称'Objects'

pen*_*ate 98 .net c# linq-to-entities entities visual-studio-2008

我正在使用实体,C#和SQL Server来创建一个n层应用程序.我正在创建一些我所有DAL组件共有的基类.在这个基类中,我想处理实体对象继承的ObjectContext基类的连接状态.

编译会引发以下错误:

名称空间'System.Data'中不存在类型或命名空间名称'Objects'(您是否缺少程序集引用?)

此外,using语句System.Data.Objects因同样的原因无法解析.

我尝试添加程序集作为参考,但在程序集引用的.NET选项卡中找不到它.

有什么想法吗?谢谢!

Jos*_*den 202

您需要添加对.NET程序集System.Data.Entity.dll的引用.


Jam*_*mes 51

如果您使用的是Entity Framework 6,则名称空间已更改.你想用

System.Data.Entity.Core.Objects.ObjectQuery
Run Code Online (Sandbox Code Playgroud)


Tim*_*ine 31

从EF5升级到EF6 nuget一段时间后仍然遇到这个问题.我通过更新生成的代码来引用它来临时修复它System.Data.Entity.Core.Objects,但是在生成之后它会再次被更改回来(正如预期的那样生成它).

这解决了这个问题:

http://msdn.microsoft.com/en-us/data/upgradeef6

如果您使用EF Designer创建了任何模型,则需要更新代码生成模板以生成与EF6兼容的代码. 注意:目前只有Visual Studio 2012和2013可用的EF 6.x DbContext Generator模板.

  1. 删除现有的代码生成模板.这些文件通常被命名为<edmx_file_name> .TT<edmx_file_name> .Context.tt下在解决方案资源管理您的EDMX文件嵌套.您可以在解决方案资源管理器中选择模板,然后Del按键将其删除.
    注意:在"网站"项目中,模板不会嵌套在edmx文件下,而是在"解决方案资源管理器"中与其一起列出.
    注意:在VB.NET项目中,您需要启用"显示所有文件"才能看到嵌套的模板文件.
  2. 添加适当的EF 6.x代码生成模板.在EF Designer中打开模型,右键单击设计图面并选择Add Code Generation Item ...
    • 如果您使用的是DbContext API(推荐),那么EF 6.x DbContext Generator将在Data选项卡下可用.
      注意:如果您使用的是Visual Studio 2012,则需要安装EF 6 Tools才能使用此模板.有关详细信息,请参阅Get Entity Framework.
    • 如果您使用的是ObjectContext API,则需要选择Online选项卡并搜索EF 6.x EntityObject Generator.
  3. 如果您将任何自定义应用于代码生成模板,则需要将它们重新应用于更新的模板.