编译会抛出以下错误:
“类型或命名空间名“Objects”在命名空间“System.Data”中不存在(是否缺少程序集引用?)”。
同时,因为同样的原因,“using”语句System.Data.Objects也无法解析。
我尝试添加程序集引用,但在程序集引用的.NET选项卡中找不到它。
有什么想法吗? 谢谢!
System.Data.Entity.Core.Objects.ObjectQuery
升级了一段时间的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模板。
- 删除现有的代码生成模板。这些文件通常被命名为<edmx_file_name>.tt和<edmx_file_name>.Context.tt,并嵌套在Solution Explorer中的edmx文件下。您可以在Solution Explorer中选择模板,然后按Del键将其删除。
注意:在Web Site项目中,模板不会嵌套在edmx文件下,而是在Solution Explorer中与其并列显示。
注意:在VB.NET项目中,您需要启用“显示所有文件”才能看到嵌套的模板文件。- 添加适当的EF 6.x代码生成模板。在EF Designer中打开您的模型,右键单击设计表面,然后选择添加代码生成项...
- 如果您使用的是DbContext API(建议使用),则可以在Data选项卡下找到EF 6.x DbContext Generator。
注意:如果您正在使用Visual Studio 2012,则需要安装EF 6工具才能使用此模板。有关详细信息,请参见获取Entity Framework- 如果您正在使用ObjectContext API,则需要选择在线选项卡并搜索EF 6.x EntityObject生成器。
- 如果您对代码生成模板进行了任何定制,则需要将它们重新应用于更新后的模板。
如果你想使用"System.Data.Objects.EntityFunctions",
在EF 6.1+中,请使用"System.Data.Entity.DbFunctions"
在VS 2013中出现相同问题。
我在Web.config中添加了:
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
它的效果非常好。
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();
对于EF6,请使用以下using语句替换"xxxx.Context.cs"
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Core.Objects;
using System.Linq;
你需要添加对.NET程序集System.Data.Linq的引用
我已经添加了一个对.dll文件的引用,针对System.Data.Linq, 但上述操作不足以解决问题。你可以在以下版本的各个目录中找到.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