lunes, 28 de octubre de 2013

Convertir consultas SQL a listas

En esta entrada voy a mostraros algunas de las formas que tengo para extraer datos de una fuente de datos SQL usando ADO.Net sin usar Entity Framework ni Linq2SQL.

Convertir un Dataset a Lista de objetos

 En este caso, tenemos un antiguo repositorio que nos devuelva un dataset a partir de un SQL. Podemos usar este método para convertirlo a un Enumerable y así poder adaptarlo a nuestras clases.

La clase que devuelve un DataSet

   public class DL_Datos  
   {  
     string connectionString="Persist Security Info=False;Integrated Security=TRUE;database=NorthWind;server=srvdesarrollo;Connect Timeout=60";  
     public DataSet DameDatos(string consulta)  
     {  
       SqlConnection conn = new SqlConnection(connectionString);  
       SqlDataAdapter da = new SqlDataAdapter(consulta, conn);  
       DataSet ds = new DataSet();  
       da.Fill(ds);  
       return ds;  
     }  
   }  

Nuestra clase

    public class Empleado
    {
        public int codigo { get; set; }
        public string nombre { get; set; }
        public string ciudad { get; set; }
        public string pais { get; set; }
    };

La conversión

        DL_Datos Sqldatos = new DL_Datos();  
       DataSet ds = Sqldatos.DameDatos("select EmployeeID, FirstName, LastName, City, Country from employees");  
       List<Empleado> empleados = ds.Tables[0]  
                     .AsEnumerable()  
                     .Select(dr => new Empleado()  
                     {  
                       codigo = dr.Field<int>("EmployeeID"),  
                       nombre = dr.Field<string>("FirstName") + " " + dr.Field<string>("LastName"),  
                       ciudad = dr.Field<string>("City"),  
                       pais = dr.Field<string>("Country")  
                     })  
                     .ToList();  

Convertir una consulta SQL a una lista de objetos

Otra forma de crear una lista directamente es crearnos un método extensor del Command que nos devuelva ya la lista montada

El método extensor

       public static void Fill<T>(this IDbCommand cmd, IList<T> list, Func<IDataReader, T> rowConverter)  
       {  
         using (var reader = cmd.ExecuteReader())  
         {  
           while (reader.Read())  
           {  
             list.Add(rowConverter(reader));  
           }  
         }  
       }  

Lo utilizaremos de esta manera:

       string connectionString = "Persist Security Info=False;Integrated Security=TRUE;database=NorthWind;server=srvdesarrollo;Connect Timeout=60";  
       using (SqlConnection conn = new SqlConnection(connectionString))  
       {  
         conn.Open();  
         SqlCommand comm = new SqlCommand("select EmployeeID, FirstName, LastName, City, Country from employees", conn);  
         List<Empleado> empleados = new List<Empleado>();  
         comm.Fill(empleados, r => new Empleado()  
         {  
           codigo = r.GetInt32(r.GetOrdinal("EmployeeID")),  
           nombre = r.GetString(r.GetOrdinal("FirstName")) + " " + r.GetString(r.GetOrdinal("LastName")),  
           ciudad = r.GetString(r.GetOrdinal("City")),  
           pais = r.GetString(r.GetOrdinal("Country"))  
         });  
         conn.Close();  
       }  

Convertir un DataSet a un Dictionary

       DL_Datos Sqldatos = new DL_Datos();  
       DataSet ds = Sqldatos.DameDatos("select regionID, regionDescription from Region");  
       Dictionary<int, string> dict = ds.Tables[0]  
           .AsEnumerable()  
           .ToDictionary(  
               x => x.Field<int>("regionID"),   
               x => x.Field<string>("regionDescription")  
               );  
Saludos.







lunes, 21 de octubre de 2013

Comparador de datos en Visual Studio 2012

En Visual Studio 2010 teníamos la comparación de esquemas y la comparación de datos.




El Visual Studio 2012 solamente viene con el comparador de esquemas.



El comparador de datos para Visual Studio 2012 viene con las Sql Server Data Tools.

Lo podéis bajar de este enlace.

http://msdn.microsoft.com/en-us/jj650015

Ojo, si tienes el Visual Studio 2012 en Español, como bien se indica en la página, debes bajarte la versión en español y ejecutarla en modo Administrador. Si no se hace de esta forma, dará un error al instalar.

Saludos.



martes, 1 de octubre de 2013

Comandos de NuGet

El administrador de paquetes NuGet nos proporciona una forma cómoda de instalar los paquetes, pero sólo mediante consola podemos sacar el máximo provecho.

A medida que vamos escribiendo en la consola podemos pulsar tabulación y nos irá apareciendo las opciones disponibles.

Aquí detallo los comandos más importantes con los que podemos sacarle jugo al nuget:

 Get-help nuget         
Ayuda de los comandos de NuGet



 install-package jquery
Instala la última versión del paquete

 install-package jquery -Version 1.7.2
Instala una versión específica del paquete



 get-package jquery
Lista de los paquetes instalados que contienen tanto en la descripción como en el ID del paquete la palabra ‘jquery’

 get-package id:jquery
Lista de los paquetes instalados que contienen el ID del paquete la palabra ‘jquery’ 

 Get-package -updates
Lista de los paquetes instalados que tienen  una nueva versión.

 get-package –ListAvailable 
Lista de todos los paquetes disponibles en NuGet 

 get-package -Listavailable –filter jquery 
Lista de todos los paquetes de NuGet que contienen tanto en el ID como en la descripción la palabra jquery
 
 get-package -Listavailable –filter id: jquery 
Lista de todos los paquetes de NuGet que contienen en el ID la palabra jquery

 get-package -Listavailable –filter jquery –AllVersions 
Lista de todos los paquetes de NuGet con sus versiones disponibles que contienen tanto en el ID como en la descripción la palabra jquery

 Get-Package -ListAvailable -filter jquery -allversions |?{$id -eq 'jquery'}
Lista de todos los paquetes de NuGet con sus versiones disponibles que contienen en el ID la palabra jquery



 Update-Package jquery 
Actualiza JQuery a la última versiónReinstala el paquete jquery
 update-package jQuery -version 1.7.2
Actualiza el paquete JQuery a una versión determinada
 update-package jQuery -safe
Actualiza la revisión del paquete JQuery sin pasar de major-minor. Esto significa que, en el caso que tengamos JQuery 1.7.0, se actualizará a 1.7.2 y no a versiones superiores.


 Update-Package -Reinstall  
Reinstala todos los paquetes instalados en la solución
 Update-Package jquery -Reinstall  
Reinstala jquery

 uninstall-package jquery 
Desinstala JQuery
 uninstall-package jquery –Force 
Fuerza la desinstalación de JQuery, saltándose las dependencias.


Espero que os sea de utilidad.

Saludos.