首页 文章

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

提问于
浏览
90

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

编译会引发以下错误:

名称空间'System.Data'中不存在类型或命名空间名称'Objects'(您是否缺少程序集引用?)

此外,using语句System.Data.Objects因同样的原因无法解析 .

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

有什么想法吗?谢谢!

8 回答

  • 3

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

  • 48

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

    System.Data.Entity.Core.Objects.ObjectQuery
    
  • 0

    从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,并嵌套在解决方案资源管理器中的edmx文件下 . 您可以在解决方案资源管理器中选择模板,然后按Del键删除它们 . 注意:在“网站”项目中,模板不会嵌套在edmx文件下,而是在“解决方案资源管理器”中与其一起列出 . 注意:在VB.NET项目中,您需要启用“显示所有文件”才能看到嵌套的模板文件 . 添加适当的EF 6.x代码生成模板 . 在EF Designer中打开模型,右键单击设计图面并选择Add Code Generation Item ...如果您使用的是DbContext API(推荐),那么EF 6.x DbContext Generator将在Data选项卡下可用 . 注意:如果您使用的是Visual Studio 2012,则需要安装EF 6 Tools才能使用此模板 . 有关详细信息,请参阅Get Entity Framework . 如果您使用的是ObjectContext API,则需要选择Online选项卡并搜索EF 6.x EntityObject Generator . 如果您将任何自定义应用于代码生成模板,则需要将它们重新应用于更新的模板 .

  • 31

    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

  • 2

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

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

  • 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 .

  • 0

    我添加了对.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

  • 188

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

相关问题