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

Posted

技术标签:

【中文标题】命名空间“System.Data”中不存在类型或命名空间名称“Objects”【英文标题】:The type or namespace name 'Objects' does not exist in the namespace 'System.Data' 【发布时间】:2010-11-19 11:45:27 【问题描述】:

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

编译抛出以下错误:

类型或命名空间名称“对象” 命名空间中不存在 'System.Data'(您是否缺少 汇编参考?)

此外,由于同样的原因,使用语句 System.Data.Objects 无法解析。

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

有什么想法吗?谢谢!

【问题讨论】:

【参考方案1】:

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

【讨论】:

你好 Null29,你能解释一下你的答案比已经提供的更好吗?【参考方案2】:

在我的情况下,对于 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();    

当然你的匿名类型签名可能不同。

HTH。

【讨论】:

【参考方案3】:

不久前从 EF5 升级到 EF6 nuget 并一直遇到此问题。我会通过更新生成的代码以引用System.Data.Entity.Core.Objects 来临时修复它,但是在生成之后它会再次变回(正如预期的那样,因为它生成了)。

这彻底解决了问题:

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

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

    删除现有的代码生成模板。这些文件通常命名为 .tt.Context.tt,并嵌套在解决方案资源管理器中的 edmx 文件下。您可以在解决方案资源管理器中选择模板,然后按 Del 键将其删除。注意:在网站项目中,模板将不是嵌套在您的 edmx 文件下,而是在解决方案资源管理器中与它一起列出。注意:在 VB.NET 项目中,您需要启用“显示所有文件”能够看到嵌套的模板文件。 添加适当的 EF 6.x 代码生成模板。在 EF 设计器中打开您的模型,右键单击设计图面并选择添加代码生成项... 如果您使用的是 DbContext API(推荐),那么 EF 6.x DbContext Generator 将在 Data 选项卡下可用。注意:如果您使用的是 Visual Studio 2012,则需要安装 EF 6 工具才能获得此模板。详情请见Get Entity Framework。 如果您使用 ObjectContext API,则需要选择 在线 选项卡并搜索 EF 6.x EntityObject Generator。 如果您对代码生成模板应用了任何自定义,则需要将它们重新应用到更新的模板。

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

System.Data.Entity.Core.Objects.ObjectQuery

【讨论】:

我通过 nuget 包管理器安装了 Entity Framework 6.1.3。我还没有引用微软的程序集 System.Data.Entity。它给了我错误。所以我的问题是,在添加 using 语句之前,我需要先引用 System.Data.Entity 吗?【参考方案6】:

VS 2013 中的同样问题

我在 Web.config 中添加了:

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

它就像一个魅力。

我在页面上找到了它: 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

【讨论】:

【参考方案7】:

我为 System.Data.Linq 添加了对 .dll 文件的引用, 以上还不够。您可以在各个目录中找到 .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

【讨论】:

更正这回答了一个问题:名称空间“System.Data”中不存在类型或名称空间名称“Linq”【参考方案8】:

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

【讨论】:

成功了!好奇,System.Data.objects 命名空间是否确实存在于 System.Data.Entity 中? 嗯...当我在 nuget 中搜索时,我什至没有看到它

以上是关于命名空间“System.Data”中不存在类型或命名空间名称“Objects”的主要内容,如果未能解决你的问题,请参考以下文章

命名空间“System.Configuration”中不存在类型或命名空间名称“ConfigurationManager”

命名空间“System.Configuration”中不存在类型或命名空间名称“ConfigurationMannger”,求帮助,谢谢

命名空间“System.Web.Mvc”中不存在类型或命名空间名称

错误:命名空间中不存在类型或命名空间 UI

命名空间错误中不存在类型资源

命名空间“Microsoft”中不存在类型或命名空间名称“Reporting”