Linq to SQL es una tecnolog├şa precursora del actual Entity Framework que fue pionera en sacar partido a Linq para crear un ORM f├ícil de utilizar con esta tecnolog├şa. Su principal limitaci├│n es que solo funciona con SQL Server y que los "mapeos" deben ser 1 a 1 con las tablas (una tabla = 1 clase). Sin embargo es tremendamente f├ícil de usar y tiene un dise├▒ador visual muy efectivo, por lo que a mucha gente (incluy├ęndome yo mismo) nos gusta mucho y es v├ílido para la mayor parte de las situaciones si trabajas con el gestor de datos de Microsoft.

En ASP.NET Web Forms (otra tecnolog├şa ahora en retroceso pero tremendamente efectiva para ciertos tipos de aplicaciones Web, como por ejemplo las orientadas a gesti├│n) se incluye un control para acceso visual a datos llamado LinqDataSource que est├í especialmente dise├▒ado para trabajar con esta tecnolog├şa. Este control combinado con los diferentes controles enlazados a datos (y especialmente los ListView y DataPager) permite crear interfaces web orientadas a datos de manera visual, efectiva y r├ípida.

Sin embargo en algunas versiones de Visual Studio, por ejemplo la 2015, existen algunos problemillas debido a la forma en la que está configurado el entorno por defecto.

Haz la siguiente prueba: abre Visual Studio 2015, crea un nuevo proyecto web vac├şo de tipo de ASP.NET Web Forms:

Proyecto-Nuevo-WebForms-VS2015

Ahora añade una nueva clase de tipo Linq2SQL. Enlázala, por ejemplo, a la base de datos Northwind para poder hacer una prueba, y arrastra algunas tablas sobre el diseñador.

Ahora, en una nueva p├ígina .aspx vac├şa arrastra un control Linq2SQL. Al ir a configurarlo ver├ís que la lista desplegable de los DataContext ┬íest├í vac├şa!:

LinqDataSource_Vacio

Es decir, no se ha reconocido la clase de contexto de datos que tenemos en el archivo Linq2SQL. ┬┐C├│mo es posible si todo el objeto de ese control es, precisamente, reconocer este tipo de contextos de datos?

El problema es que el proyecto de Web Forms, por defecto, no incluye ninguna referencia a la biblioteca de Linq y por eso no reconoce el DataContext, lo cual es una cosa extra├▒a.

La soluci├│n es sencilla: hay que a├▒adir al web.config de nuestra soluci├│n la siguiente referencia directamente en la secci├│n de "assemblies":

<compilation debug="true" targetFramework="4.5.2">
       <assemblies>
         <add assembly="System.Data.Linq, Version=4.0.30319.17929, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
       </assemblies>
</compilation>

De este modo el proyecto logrará encontrar los DataContext y podremos seleccionar sin problema nuestra clase Linq2SQL:

LinqDataSource_OK

Problema solucionado.

¡Espero que te sea útil!

💪🏻 ┬┐Este post te ha ayudado?, ┬┐has aprendido algo nuevo?
Pues NO te pido que me invites a un caf├ę... Te pido algo m├ís f├ícil y mucho mejor

Escrito por un humano, no por una IA