Foros del Web » Programando para Internet » ASPX (.net) »

Validar consulta LINQ en capa de datos

Estas en el tema de Validar consulta LINQ en capa de datos en el foro de ASPX (.net) en Foros del Web. Hola, Recientemente he empezado a programar en asp.net y a trabajar dividiendo la aplicación en 3 capas y ya me estoy encontrando los primeros problemas... ...
  #1 (permalink)  
Antiguo 09/10/2012, 05:37
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 15 años, 4 meses
Puntos: 2
Pregunta Validar consulta LINQ en capa de datos

Hola,

Recientemente he empezado a programar en asp.net y a trabajar dividiendo la aplicación en 3 capas y ya me estoy encontrando los primeros problemas...

En la capa de datos tengo una función que devuelve un tipo IQueryable con una consulta LINQ dinámica construida en base a un parámetro que le pasa el usuario, posteriormente muestro el resultado de la consulta en un GridView.

Todo bien hasta aquí, pero ¿qué ocurre si el usuario inserta un valor inválido, cómo recojo esa excepción y le informo?
Necesitaría que la función devolviese un String, pero ¿cómo convierto el String en IQueryable y lo muestro en la rejilla?

Código PHP:
public static IQueryable ObtenerProductos(string condicion)
        {
            
NorthwindDataContext db = new NorthwindDataContext();

            var 
query db.Products
                        
.Where(condicion)
                        .
Select("new (ProductID, ProductName)");

            return 
query;
        } 
Código PHP:
            //Llamada a la función
            
ObtenerProductos("ProductID<=10"
Gracias y un saludo
  #2 (permalink)  
Antiguo 16/10/2012, 14:35
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 11 meses
Puntos: 22
Respuesta: Validar consulta LINQ en capa de datos

Primero que todo el metodo que estas utilizando para pasar los condicionales a la consulta no son los mejores ya que pueden hacer que tu aplicación sea facilmente vulnerable a ataques de inyeccion SQL, por otro lado para hacer lo que quieres puedes utilizar un bloque Try Catch de la siguiente manera

Código C#:
Ver original
  1. try
  2. {
  3.     //Llamada a la función
  4.     ObtenerProductos("ProductID<=10");
  5. }
  6. catch(Exception ex){
  7.     //Manejar el error
  8. }
  #3 (permalink)  
Antiguo 18/10/2012, 10:14
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 8 meses
Puntos: 61
Respuesta: Validar consulta LINQ en capa de datos

Vamos por pasos primero dices que estas trabajando en una aplicacion en capas muy bien recuerda que cuando se trabaja en arquitectura en capas hay una capa donde se hacen todas las validaciones de negocio(capa logica) entonces en esta capa es donde arias todas tus validaciones en la capa de datos solo tienes la query a la bd la capa lógica es la que se encarga de hacer todas las validaciones y es ahi donde antes de hacer la query validas que el dato no sea nulo. Aunque también estas validaciones simples de que los campos no sean nulos tendrias que hacerse en la capa presentación y asi hagas una validacion doble.

Estas usando Entity Framework? porque si es asi seria bueno que uses plantillas t4 para crear tus clases poco y poder dividir las entidades de la persistencia y aprovechar toda la ventaja de trabajar en capas.

En mi blog estoy armando una serie de artículos sobre el desarrollo en capas usando entity framework usando clases entidades que talvez te ayude en algo.
Desarrollo en Capas Entity Framework(Parte 1)
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres

Etiquetas: c#, iqueryable, linq, sql, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:12.