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。
- 删除现有的代码生成模板。 这些文件通常被命名为<edmx_file_name> .tt和<edmx_file_name> .Context.tt ,并embedded在解决scheme资源pipe理器中的edmx文件下。 您可以在解决scheme资源pipe理器中select模板,然后按Del键删除它们。
注意:在网站项目中,模板不会嵌套在您的edmx文件下,而是在解决scheme资源pipe理器中列出。
注意:在VB.NET项目中,您将需要启用“显示所有文件”才能看到嵌套的模板文件。- 添加适当的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生成器 。
- 如果您对代码生成模板应用了任何自定义,则需要将其重新应用到更新后的模板。
同样的问题在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的引用