types或名称空间名称“对象”不存在于名称空间“System.Data”

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

编译抛出以下错误:

名称空间“System.Data”中不存在types或命名空间名称“对象”(您是否缺less程序集引用?)

此外,使用语句System.Data.Objects不会由于相同的原因解决。

我试图添加程序集作为参考,但无法在程序集引用的.NET选项卡中find它。

有什么想法吗? 谢谢!

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

如果您正在使用entity framework6,名称空间已更改。 你想用

System.Data.Entity.Core.Objects.ObjectQuery 

从EF5升级到EF6 nuget一会儿,并不断遇到这个问题。 我会临时修复它通过更新生成的代码引用System.Data.Entity.Core.Objects ,但生成后,它会改回(如预期,因为它生成)。

这解决了问题的好处:

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

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

  1. 删除现有的代码生成模板。 这些文件通常被命名为<edmx_file_name> .tt<edmx_file_name> .Context.tt ,并embedded在解决scheme资源pipe理器中的edmx文件下。 您可以在解决scheme资源pipe理器中select模板,然后按Del键删除它们。
    注意:在网站项目中,模板不会嵌套在您的edmx文件下,而是在解决scheme资源pipe理器中列出。
    注意:在VB.NET项目中,您将需要启用“显示所有文件”才能看到嵌套的模板文件。
  2. 添加适当的EF 6.x代码生成模板。 在EF Designer中打开您的模型,右键单击devise界面,然后select添加代码生成项目…
    • 如果您使用的是DbContext API(推荐),那么EF 6.x DbContext Generator将在“ 数据”选项卡下可用。
      注意:如果您使用的是Visual Studio 2012,则需要安装EF 6 Tools才能拥有此模板。 详情请参阅获取entity framework 。
    • 如果使用ObjectContext API,则需要selectOnline选项卡并searchEF 6.x EntityObject生成器
  3. 如果您对代码生成模板应用了任何自定义,则需要将其重新应用到更新后的模板。

同样的问题在VS 2013

我在Web.config中添加:

 <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 

它像一个魅力工作。

我在页面上find它: http : //www.programmer.bz/Home/tabid/115/asp_net_sql/281/The-type-or-namespace-name-Objects-does-not-exist-in-the-namespace- SystemData.aspx

在我的情况下EF 6+,当使用这个:

 System.Data.Entity.Core.Objects.ObjectQuery 

作为这个命令的一部分:

 var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query).ToTraceString(); 

我得到这个错误:

 Cannot cast 'query' (which has an actual type of 'System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>') to 'System.Data.Entity.Core.Objects.ObjectQuery' 

所以我最终不得不使用这个:

 var sql = ((System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>)query).ToString(); 

当然你的匿名types签名可能是不同的。

HTH。

如果你想使用“System.Data.Objects.EntityFunctions”

在EF 6.1+中使用“System.Data.Entity.DbFunctions”

我添加了对.dll文件的引用,对于System.Data.Linq,以上是不够的。 您可以在以下版本的各个目录中find.dll文件。

System.Data.Linq C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Data.Linq.dll 3.5.0.0

System.Data.Linq C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.Data.Linq.dll 4.0.0.0

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