Buenas noches, estoy iniciándome en LINQ TO SQL y me encuentro desarrollando un sitio web, lo he dividido en 3 proyectos (capas):
1.- Proyecto con la interfaz web
2.- Proyecto con la lógica del negocio (BL)
3.- Proyecto de acceso a datos (DAL) (Linq to SQL)
Para aprovechar la rapidez del desarrollo con LINQ tengo mi diagrama de Base de Datos (archivo .dbml) junto con los procedimientos almacenados, en cada tabla asocie el procedimiento para las transacciones (insertar, eliminar, actualizar) hasta aqui todo OK bajo la arquitectura en capas.
Mi problema se da al devolver un SELECT, o mejor dicho un procedimiento almacenado con seleccion y condicion por parametros, he intentado lo siguiente:
Public Function ListarUsuario(ByVal codigo As Int32) As DataTable
oVentas = New VentasDataContext
Try
Return oVentas.usp_listar_usuario(codigo)
Catch ex As Exception
Throw ex
Finally
oVentas = Nothing
End Try
End Function
Al intentar asignar el resultado a mi gridview (capa web) me genera el siguiente error:
No se puede convertir un objeto de tipo 'SingleResult`1[ProyectoDAL.usp_listar_usuarioResult]' al tipo 'System.Data.DataTable'.
La forma en la que asigno el valor es un simple llamado de la funcion en el archivo aspx.vb :
Me.grvUsuario.DataSource = oAperturaBL.listarUsuario(13)Me.grvUsuario.Dispose()
Si tuviera el DataContext en el mismo proyecto que la interfaz web no tendria problema, pero me gustaria tener el código dividido, espero me puedan ayudar o aclarar como trabajar bajo este nuevo esquema LINQ to SQL.
Gracias!