2010-10-25 9 views
11

Zrobiłem LINQ-SQL pliku .dbml w Visual Studio 2010.typu lub obszaru nazw „Linq” nie istnieje w obszarze nazw „System.Data”, itp

Otrzymuję następujące 2 błędy, łącznie 60 razy w sumie, głównie pierwsze.

  1. typu lub obszaru nazw 'Linq' nie istnieje w przestrzeni nazw System.Data ''
  2. typu lub obszaru nazwa 'EntitySet' Nie można znaleźć

I W tym miejscu i na innych stronach internetowych znaleziono różne podobne pytania, z których wszystkie wydają się sugerować, że należy dodać dodatkowe elementy.

Dodałem wszystkie sugerowane, problem nadal występuje. Inną dziwną rzeczą jest to, że sama VS2010 nie podkreśla błędów na ekranie edytora, ale pokazuje je w dzienniku błędów.

W każdym razie, widziałem już wszystkie tematy i zastosowałem ich rozwiązania, problem nadal występuje.

Niektóre dane techniczne:

  • Używam Windows 7 32-bit.
  • Nadal mam zainstalowany program Visual Studio 2008 SP1 . Właśnie zainstalowałem VS2010 po wygaśnięciu i nie usunąłem starszej wersji .
  • Używam serwera MSSQL 2008 R2.

A oto zespoły wymienione w moim pliku 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

Czy ramy cel 3,5? (Zobaczysz to we właściwościach/aplikacji, jeśli są to projekty C#.) – steinar

+0

Zrób to w odpowiedzi, a dam ci rozwiązanie. To było rzeczywiście ... Boże, do cholery. Po prostu nie rozumiem, dlaczego. Czy .NET 4 nie zawiera elementów, które są domyślnie w wersji 3.5? – KdgDev

+0

Właśnie chciałem "zaoferować" przyjęcie przedstawiciela do "odpowiedzi" stolika, ale nie rozumiem rozwiązania ... :) Tak, stworzyłeś nowy projekt w VS2010, dodano nowy dbml i zobaczyłeś błąd ? Jeśli tak, to * jest * dziwne. Właśnie przetestowałem to z 3.5 i 4.0 i wszystkie wymagane referencje zostały dodane automatycznie. No cóż ... – shaunmartin

Odpowiedz

14

Znalazłem this link, który rozwiązał to dla mnie. Siatka jest to, że dodaje się należy dodać do pliku 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> 

Należy zauważyć, że znaczniki konfiguracja/system.web/compilation już tam są, a zespoły/dodać znaczniki montażowe muszą być dodawane. To mimo że System.Data.Linq jest łatwo znaleziony przez VS podczas budowania.

Błąd wystąpił w App_Code.LinqToObservations.designer.cs, kod wygenerowany przez Linq z mojego pliku LinqToObservations.dbml.

(dodatkowe tło. I prawdopodobnie dostał się do tej sytuacji, bo włączona Linq po fakcie, stosując procedurę znaleźć here)

+0

thnx bardzo rozwiązało problem. Jednak muszę potwierdzić, że wersja 4.0.0.0 jest złożona z Linq, czy ma coś wspólnego z netem? – Rusty

+0

@Rusty - Nie mam środowiska do sprawdzenia, ale uważam, że istnieje sposób sprawdzenia zainstalowanej wersji System.Data.Linq. –

+0

To działało również dla mnie. Nie rozumiem, dlaczego tak jest. Dodaję odniesienie i kompiluje się dobrze, ale kiedy przeglądam w przeglądarce, to tak, jakbym nie dodawał odniesienia, –

7

Byłem ten sam problem na dokładnie takiej samej konfiguracji z wyjątkiem mojego Windows 7 64-bit. Rozwiązano go, wykonując [project name] -> References -> Add reference -> System.Data.Linq Dlaczego dodajesz odniesienia ręcznie?

+1

Odniesienie już istnieje i nadal mam ten problem. –

+0

pomogło to wykorzystać SqlMethods.DateDiffDay, dziękuję. – stom

+0

@HotLicks Mam również ten sam problem, odniesienie dodane i potwierdzone w web.config. jakieś pomysły proszę? – Jawad

2

Można spróbować następujących czynności:

Dodaj odwołanie do System.Data.Linq (prawy przycisk myszy na folderze Referencje | Wybierz Add Reference | Wybierz zakładkę NET (domyślne są zaznaczone) | wybrać System.Data. LINQ odniesienia. |. kliknij OK

mam nadzieję, że ty lub ktoś inny pomoże

7

Ważne, należy ustawić w webconfig

<system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
</system.web> 
Powiązane problemy