Тип или имя пространства имен Linq не существует в пространстве имен "System.Data" и т.д.

Я только что сделал файл Linq-to-SQL.dbml в Visual Studio 2010.

Я получаю следующие 2 ошибки, всего 60 раз, в основном первый.

  • Тип или имя пространства имен 'Linq' не существует в пространстве имен "System.Data"
  • Тип или пространство имен имя "EntitySet" не найдено.

Я нашел несколько похожих вопросов здесь и на других сайтах, все из которых, похоже, говорят, что нужно добавить дополнительную сборку.

Я добавил, что каждая предлагаемая проблема сохраняется. Еще одна особенность заключается в том, что сам VS2010 не подчеркивает ошибки на экране редактора, но показывает их в журнале ошибок.

В любом случае, я видел все существующие темы и применял их решения, проблема сохраняется.

Некоторые технические детали:

  • Я запускаю 32-разрядную версию Windows 7.
  • У меня все еще есть 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"/>

Ответ 1

Я нашел эту ссылку, которая решила его для меня. Сеть состоит в том, что в 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>

Обратите внимание, что теги configuration/system.web/compilation уже есть, и необходимо добавить сборки/добавить теги сборки. Это несмотря на то, что System.Data.Linq легко обнаруживается VS при создании.

Ошибка произошла в App_Code.LinqToObservations.designer.cs, код, сгенерированный Linq из моего файла LinqToObservations.dbml.

(Дополнительный фон: я, вероятно, попал в эту ситуацию, потому что я включил Linq после факта, используя найденную процедуру здесь.)

Ответ 2

У меня была такая же проблема с точно такой же конфигурацией, за исключением того, что у меня Windows 7 64-разрядная. Получилось это решить, выполнив [project name] -> References -> Add reference -> System.Data.Linq Почему вы добавляете ссылки вручную?

Ответ 3

Важно, вы должны установить в webconfig

    <system.web>
    <compilation debug="true" targetFramework="4.0"/>
</system.web>

Ответ 4

Вы можете попробовать следующее:

Добавьте ссылку на System.Data.Linq (щелкните правой кнопкой мыши по папке "Ссылки" | выберите "Добавить ссылку". Выберите вкладку .Net(выбран по умолчанию) | выберите System.Data.Linq ссылка | нажмите "ОК".

Я надеюсь, что это поможет вам или кому-то еще.