2010-10-25 52 views
11

Acabo de hacer un LINQ to SQL archivo .dbml en Visual Studio 2010.El tipo o espacio de nombres 'LINQ' no existe en el espacio de nombres 'System.Data', etc

Me estoy poniendo el después de 2 errores, un total de 60 veces en total, principalmente el primero.

  1. El tipo o espacio de nombres 'LINQ' no existe en el espacio de nombres 'System.Data'
  2. El tipo o espacio nombre 'EntitySet' no se pudo encontrar

I' he encontrado varias preguntas similares aquí y en otros sitios, todas las cuales parecen indicar que es necesario agregar algún ensamblaje adicional.

Agregué todos sugeridos, el problema persiste. Otra cosa extraña es que el VS2010 por sí mismo no subraya los errores en la pantalla del editor, pero sí los muestra en el registro de errores.

De todos modos, he visto todos los temas existentes y aplicado sus soluciones, el problema persiste.

Algunos detalles técnicos:

  • Estoy utilizando Windows 7 de 32 bits.
  • Todavía tengo instalado Visual Studio 2008 SP1 . Acabo de instalar VS2010 cuando salió y no eliminé el anterior.
  • Estoy ejecutando MSSQL Server 2008 R2.

y aquí está la ensamblajes que figuran en mi archivo 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

es el marco de destino 3.5? (Lo verás en propiedades/aplicaciones si se trata de proyectos de C#). – steinar

+0

Responde a eso y te daré la solución. Eso fue de hecho ... Dios maldición. Simplemente no entiendo por qué. ¿.NET 4 no incluye las cosas que están en 3.5 por defecto? – KdgDev

+0

Estaba a punto de "ofrecer" el representante para la "respuesta" de steinar, pero no entiendo la solución ... :) Entonces, creó un nuevo proyecto en VS2010, agregó un nuevo dbml y vio el error ? Si es así, ese * es * raro. Acabo de probarlo con 3.5 y 4.0 y todas las referencias requeridas se agregaron automáticamente. Ah bien ... – shaunmartin

Respuesta

14

Encontré this link que lo resolvió para mí. El neto es que el siguiente debe ser añadido a 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> 

Tenga en cuenta que las etiquetas de configuración/system.web/compilación ya están allí, y las asambleas/añadir etiquetas de montaje se deben agregar. Esto a pesar de que VS construye System.Data.Linq al construir.

El error fue en App_Code.LinqToObservations.designer.cs, código generado por Linq desde mi archivo LinqToObservations.dbml.

(fondo adicional:. Probable que me metí en esta situación porque Habilité LINQ después de los hechos mediante el procedimiento que se encuentra here)

+0

, pero esto resolvió el problema. Sin embargo, necesito confirmar que la versión 4.0.0.0 es de ensamblado Linq o algo que ver con do net? – Rusty

+0

@Rusty: no tengo un entorno para verificar, pero creo que hay una forma de comprobar la versión instalada de System.Data.Linq. –

+0

Esto funcionó para mí también. No entiendo por qué es así. Agregué una referencia y compila bien, pero cuando la veo en el navegador es como si no hubiera agregado una referencia, –

7

He tenido el mismo problema en exactamente la misma configuración a excepción de mi Windows 7 es de 64 bits. Entendido por [project name] -> References -> Add reference -> System.Data.Linq ¿Por qué agrega referencias a mano?

+1

La referencia ya está allí y todavía tengo este problema. –

+0

esto ayudó a utilizar SqlMethods.DateDiffDay, gracias. – stom

+0

@HotLicks También estoy teniendo el mismo problema, la referencia se agregó y se confirmó en web.config. alguna idea, por favor? – Jawad

2

Puede seguir los siguientes pasos:

añadir una referencia a System.Data.Linq (Haga clic derecho sobre la carpeta Referencias | seleccione Agregar referencia | Seleccione la pestaña Net (¿Se ha seleccionado por defecto) | selecciona System.Data. LINQ referencia |.. haga clic en Aceptar

espero que esto ayudará a usted u otra persona

7

importante, debe establecer en webconfig

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