Answers:
您需要添加对.NET程序集System.Data.Entity.dll的引用。
如果使用的是Entity Framework 6,则名称空间已更改。你想用
System.Data.Entity.Core.Objects.ObjectQuery
从EF5升级到EF6已有一段时间,并且一直遇到此问题。我会通过将生成的代码更新为reference来临时修复它System.Data.Entity.Core.Objects
,但是在生成之后,它将再次变回原来的样子(自生成以来,这是预期的)。
这样可以彻底解决问题:
http://msdn.microsoft.com/en-us/data/upgradeef6
如果您使用EF Designer创建了任何模型,则需要更新代码生成模板以生成EF6兼容代码。 注意:当前只有EF 6.x DbContext Generator模板可用于Visual Studio 2012和2013。
- 删除现有的代码生成模板。这些文件通常被命名为<edmx_file_name> .TT和<edmx_file_name> .Context.tt下在解决方案资源管理您的EDMX文件嵌套。您可以在解决方案资源管理器中选择模板,然后Del按键将其删除。
注意:在网站项目中,模板不会嵌套在edmx文件下,而是在解决方案资源管理器中列出。
注意:在VB.NET项目中,您需要启用“显示所有文件”以查看嵌套的模板文件。- 添加适当的EF 6.x代码生成模板。在EF设计器中打开模型,在设计图面上单击鼠标右键,然后选择“ 添加代码生成项...”。
- 如果使用的是DbContext API(推荐),则EF 6.x DbContext Generator将在“ 数据”选项卡下可用。
注意:如果使用的是Visual Studio 2012,则需要安装EF 6工具才能具有此模板。有关详细信息,请参见获取实体框架。- 如果使用的是ObjectContext API,则需要选择“ 联机”选项卡并搜索EF 6.x EntityObject Generator。
- 如果您对代码生成模板应用了任何自定义项,则需要将其重新应用于更新后的模板。
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
以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。
我为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)\参考程序集\ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.Data.Linq.dll 4.0.0.0