2010-10-25 158 views
11

我刚刚作出了一个LINQ到SQL的.dbml在Visual Studio 2010的文件类型或命名空间名称“的Linq”不存在命名空间“System.Data”存在等

,我发现了出现2次错误,共计60次,大部分是第一次。

  1. 类型或命名空间名称“Linq的” 没有命名空间中存在“System.Data”
  2. 类型或命名空间 名“EntitySet的”找不到

我在这里和其他网站上发现了各种类似的问题,所有这些似乎都说需要添加一些额外的程序集。

我已经添加了每一个建议,问题依然存在。另一个奇怪的地方是,VS2010本身并没有在编辑器屏幕上强调错误,但它确实在错误日志中显示它们。

无论如何,我已经看到所有现有的主题并应用他们的解决方案,问题依然存在。

一些技术细节:

  • 我运行Windows 7 32位。
  • 我仍然安装了Visual Studio 2008 SP1 。我刚刚安装了VS2010 ,当它出来并没有删除 较旧的。
  • 我正在运行MSSQL服务器2008 R2。

下面是在我的web.config文件中列出的组件:

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
<add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
<add assembly="System.Data.SqlXml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
+3

是目标框架3.5? (如果这些是C#项目,你会在属性/应用程序中看到它。) – steinar 2010-10-25 23:18:02

+0

将其作为回复,我会给你解决方案。这确实是......上帝保佑。我只是不明白为什么。 .NET 4是否包含默认情况下为3.5的东西? – KdgDev 2010-10-25 23:29:44

+0

我刚刚“提供”采取代表steinar的“答案”,但我不明白解决方案... :)所以,你在VS2010中创建了一个新项目,添加了一个新的dbml,并看到错误?如果是这样,那*就是怪异的。我只是用3.5和4.0测试过,并且所有需要的引用都是自动添加的。嗯... – shaunmartin 2010-10-26 02:55:05

回答

14

我找到了this link为我解决了它。净是以下必须添加到web.config中:

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
     </assemblies> 
    </compilation> 
    </system.web> 
</configuration> 

请注意,配置/的System.Web /编译标签已经存在,而且组件/组装添加标签需要添加。即使System.Data.Linq在构建时很容易找到。

失败发生在App_Code.LinqToObservations.designer中。cs,Linq从我的LinqToObservations.dbml文件生成的代码。

(另外的背景:我很可能陷入这种情况,因为我使用的程序事后支持LINQ发现here

+0

thnx很多它解决了这个问题。但是我需要确认版本4.0.0.0是Linq程序集还是与网络有关? – Rusty 2015-02-28 05:42:51

+0

@Rusty - 我没有检查的环境,但我相信有一种方法可以检查已安装的System.Data.Linq版本。 – 2015-03-01 19:58:24

+0

这也适用于我。我不明白为什么是这样。我添加了一个引用,它编译得很好,但在浏览器中查看时,就像我没有添加引用, – 2015-03-29 04:03:56

7

我一直就恰好除了我的Windows 7相同的配置同样的问题是64位的。通过做[project name] -> References -> Add reference -> System.Data.Linq解决它为什么你手动添加引用?

+1

参考已经存在,我仍然有这个问题。 – 2014-04-04 20:33:14

+0

这有助于使用SqlMethods.DateDiffDay,谢谢。 – stom 2015-03-08 14:40:08

+0

@HotLicks我也遇到同样的问题,在web.config中添加并确认了引用。有什么想法吗? – Jawad 2016-06-08 08:09:59

2

您可以尝试以下操作:

添加参考将System.Data.Linq(右键单击引用文件夹|选择Add Reference |选择.NET选项卡(默认是选中)|选择System.Data。 LINQ参考|。单击OK

我希望这会帮助你或别人

7

重要的是,你必须在webconfig设置

<system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
</system.web> 
相关问题