lunes, 31 de octubre de 2016

Enviar correos masivos desde Word con Combinar Correspondencia

El envió de correos a varios destinatarios de manera masiva e independiente a cada destinatario desde una cuenta de correo propia, es algo sencillo que se puede hacer desde nuestro propio computador.
Para hacer esto basta tener instalado Excel, Word y Outllok.

Pasos para enviar correos desde tu PC:


  • Debes tener una cuenta de correo electrónico pre configurada en Outlook.
  • Crea un archivo Excel con dos columnas, Una con el nombre de la persona y otra con el Correo.
  • Diligencia los correos en el archivo de Excel.
  • Abrir Word y crear un documento nuevo
  • En la pestaña de “Correspondencia” pulsar clic en la opción “Iniciar combinación de correspondencia” 
  • Escoger la opción “Paso a paso por el asistente de combinar correspondencia”, Esta opción abrirá a la derecha del Word el asistente.
  • En el asistente (Parte derecha de la pantalla escoger la opción “Mensajes de correo electrónico” 
  • Clic en la parte inferior en el Paso 1 de 6 “Siguiente: Inicie el documento”
  • En el segundo paso, puedes usar la primera opción del asistente “Utilizar el documento actual”
  • Pulsa clic en la opción del paso 2 de 6 “Siguiente: Seleccionar los destinatarios”
  • Estando en el paso 3 de 6, pulsa clic en la opción “Examinar” y selecciona la hoja de Excel con los correos de los destinatarios.
  • Pulsar clic en la opción 3 de 6 “Siguiente: Escriba el mensaje” y escribes el correo que quieres enviar.
  • En este momento puedes personalizar el correo a cada persona utilizando la opción “Insertar campo combinado” para que cada correo vaya con el nombre de la persona a quien va dirigido.
  • Una vez terminado de diligenciar el correo, puedes visualizar como va a quedar pulsando clic en la opción de la cinta “vista previa de resultados”.
  • Para enviar el correo debes pulsar clic en la opción “Finalizar y combinar”, luego escoges Enviar mensajes de correo electrónico.


Antes de enviar correos debes tener en cuenta lo siguiente:


  • No utilice información de encabezado falsa o engañosa. 
  • No utilice asuntos engañosos. La línea de asunto debe reflejar el contenido y objetivo del mensaje.
  • Informe a los destinatarios su ubicación. preferiblemente su dirección física o un apartado.
  • Identificar el mensaje como un anuncio. 
  • Dentro del mensaje coloque una opción o instructivo que indique al destinatario como dejar de recibir sus correos en el futuro. Es muy desagradable estar recibiendo correos no deseados.
  • Una vez el destinatario te solicito darlo de alta en tu lista de distribución no vuelvas a enviarle correos.
  • No envíes el texto del mensaje en mayúsculas, equivale a gritar.
  • Anqué Outlook tiene formas de hacer seguimiento los correos enviados, esta opción no es fiable al 100%, así que, si quieres correos con confirmación de lectura, tendrás que usar servicios adicionales.
  • No olvides leerte la ley de protección de datos de tu país, en Colombia la podrás encontrar en el siguiente link: protección de datos personales


Para finalizar les recuerdo:

Cada quien tiene su manera de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.


  • Estos artículos son ejemplos, así que, si tienes una mejor manera de hacerlo o puedes colaborarme con alguna observación, tu comentario es bienvenido.
  • No asumo ninguna responsabilidad por el uso de lo expuesto.
  • Si los artículos son de utilidad, no olvides un “Me Gusta”, Compartirlo o dejar algún comentario.
  • Para mantener el blog se usa publicidad de google AdSense
  • Word, Excel y Outlook son programas y marcas registradas de la empresa Microsoft
  • El Blog utiliza cookies para registrar hábitos de navegación.


domingo, 30 de octubre de 2016

Error de JSON, AngularJS y Entity Framework en Visual Studio

Aprendiendo a trabajar con AngularJS en Visual Studio, realice un proyecto con generación de las entidades desde la base de datos y en el momento de retornar una consulta de información JSON hacia AngularJS con un objeto JsonResult empleando el método a continuación:

public JsonResult GetData(string searchText)
{
DatosSesion Buscar = new DatosSesion();
Buscar.TextoBuscar = searchText;

List<Persona> Personas = Servicio.PersonaConsultar(Buscar);
return new JsonResult { Data = Personas, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

obtuve el siguiente error:

Se detectó una referencia circular al serializar un objeto de tipo 'System.Data.Entity.DynamicProxies.Persona_EA0C99EE64647524A7D8EA6436602CFBD1E64A795238EDD506D7FF559CCDE7FD'.”

"A circular reference was detected while serializing an object of type 'System.Data.Entity..."

Investigando en Internet encontré para el error"JSON Circular Reference Serialization Error", como primera solución el modificar el contexto del Entity Framework de la siguiente manera:

Contexto.Configuration.ProxyCreationEnabled = false;

Sin embargo, la solución no era la que buscaba, pues genera problema adicional en el cargue de las entidades relacionadas.

Posteriormente intenté con AutoMapper, sin embargo, esto hace que generemos código adicional para transferir los datos entre objetos, así que seguí investigando y encontré la solución a mi problema retornando un objeto dynamic con   Newtonsoft.Json de la siguiente manera:

public dynamic GetData(string searchText)
{
DatosSesion Buscar = new DatosSesion();
Buscar.TextoBuscar = searchText;
List<Persona> Personas = Servicio.PersonaConsultar(Buscar);
return Newtonsoft.Json.JsonConvert.SerializeObject(Personas, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
}

El ejemplo completo del código fuente en funcionamiento lo puedes encontrar en el siguiente artículo: Arquitectura de N-Capas con Visual Studio .NET y AngularJS

Para la documentación y descarga de angularjs puedes acceder a: https://angularjs.org/

Para finalizar les recuerdo:

Cada quien tiene su manera de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.

Estos artículos son ejemplos, así que, si tienes una mejor manera de hacerlo o puedes colaborarme con alguna observación, tu comentario es bienvenido.
  • ·         No asumo ninguna responsabilidad por el uso de lo expuesto.
  • ·         Si los artículos son de utilidad, no olvides un “Me Gusta”, Compartirlo o dejar algún comentario.
  • ·         Para mantener el blog se usa publicidad de google AdSense
  • ·         El Blog utiliza cookies para registrar hábitos de navegación.

sábado, 29 de octubre de 2016

Arquitectura de N-Capas con Visual Studio .NET y AngularJS

Este artículo es el primero de una serie de artículos en que quiero explicar mi visión de la programación por capas.

La Arquitectura de N-capas es probablemente uno de los modelos más utilizados en programación. Se utiliza tan a menudo porque es escalable, extensible, segura, fácil de mantener en el tiempo, reutilizable y se puede trabajar por diferentes programadores según su especialidad sin interferirse el trabajo.

En este artículo voy a presentar una arquitectura básica de n-capas que se puede utilizar para la creación de pequeñas hasta grandes aplicaciones.

Para el desarrollo de una arquitectura en capas robusta y perdurable en el tiempo, se deben tener en cuenta los siguientes aspectos:
·         Las capas de una aplicación deben ser independientes entre sí, como las fichas de un lego. De esta manera podemos reemplazar cualquiera de las capas por una más actualizada en cualquier momento.
·         Se debe mantener el principio de responsabilidad modular, esto quiere decir que cada capa es responsable de un tema o característica.
·         Principio de caja negra. Cada componente es independiente de otros y solo interactúa en sus entradas y salidas.
·         Don't Repeat Yourself (DRY). Principio de No repitas. Cada funcionalidad debe estar una sola vez en el sistema (Sin duplicados).
·         Establecer normas en la codificación del desarrollo. Esto asegura la consistencia de código y el mantenimiento del mismo.

Ventajas

Ilustración 1
Siendo la programación en capas una arquitectura que tiene como objetivo principal separar la capa de diseño de la de lógica, existen otros valores adicionales que aportan a proyectos grandes entre otros como:

·         Facilita la creación de código estructurado
·         Facilita el trabajo en equipo, permitiendo que varios programadores trabajen paralelamente en una misma funcionalidad sin interferirse mutuamente.
·         Permite separar algunas de las capas de código en diferentes servidores para balanceo de cargas, buses de datos empresariales, etc.



En la ilustración 1 podrás apreciar el un modelo básico de capas.



Proyecto ejemplo y descripción de capas

Se elaboró un ejemplo en Visual Studio 2013 con base de datos SQL Server 2014 para la descripción de la arquitectura, a continuación, encontrarás una breve descripción de la funcionalidad que tiene cada capa, los aplicativos relacionados y las herramientas utilizadas en el ejemplo relacionados con cada capa.:


Base de Datos: es la encargada de la persistencia de los datos, la integridad de la información y el acceso a los mismos, está formada por uno o más sistemas de gestión de base de datos “SGBD” como son: Oracle, SQL server, mySQL, PostgreSQL, MongoDB, etc.  

Para el ejemplo estamos usando el motor de base de datos SQL Server Express 2014. La base de datos consiste en dos tablas, una que se llama tipo de identificación y otra Persona relacionadas entre sí como se muestra en la ilustración 1.

Importante: Al final del artículo encontraras el Script para crear la base de datos, el script incluye 200 datos creados aleatoriamente mediante estadística de los nombres y apellidos más comunes. En el script tienes que cambiar el nombre dela base de datos donde vas a colocar las tablas.

Acceso a datos: La capa de acceso de datos contiene la funcionalidad para la Creación, Consulta, Actualización y Eliminación o “CRUD” por sus siglas en inglés (Create, Read, Update and Delete) de datos en la base de datos. Hoy en día en esta capa se utilizan objetos de mapeo relacional “ORM” como son NHibernate o Entity Framework “EF”.

Para el ejemplo usamos Entity Frameworky y Linq para gestionar el CRUD de las tablas mediante clases en C#. Como punto importante cuando se instancia el modelo de datos, se realiza en una clase padre que es heredada por las clases que gestionan el CRUD, lo anterior para poder hacer configuraciones al EF que afecten a todas las clases.

Importante: Si se quiere actualizar el modelo desde la base de datos se debe cambiar la cadena de conexión "EntidadesDatos" del Entity Framework en el archivo App.config.

Lógica de negocios:  La Business Logic Layer contiene la funcionalidad principal de la aplicación. El objetivo es llevar a cabo toda la lógica personalizada que se aplica sobre los datos en métodos que se exponen desde la capa de acceso de datos.

Por ejemplo: Encriptación, Des encriptación de datos, validación de atributos, otro ejemplo: Si estoy registrando una persona y esta es menor de edad, el documento de identificación no puede ser el de un adulto.

Servicios: La capa de servicios permite exponer la capa de lógica de negocios como una API para sistemas propios o de terceros. Aunque esta capa no es obligatoria, en algunos sistemas se expone la capa de lógica de negocios directamente a la de presentación. La capa de servicios se debe implementar cuando se prevé que la lógica de la aplicación se expondrá a más de un aplicativo o capa de presentación.

Presentación: La capa de presentación es responsable de organizar la interfaz de usuario de la aplicación, es el Front End de nuestro aplicativo. En nuestro ejemplo la capa de presentación está elaborada en MVC con Bootstrap, jquery  y AngularJS.

En esta capa se puede utilizar tecnologías como ASP.NET Web Forms o ASP.NET MVC, Xamarin, etc.

Para el ejemplo la capa de presentación que usamos está elaborada como un proyecto web mvc con Bootstrap, AngularJS. Lo anterior nos permite que el ejemplo sea web responsive.
El ejemplo consiste en un Grid elaborado con Angular que permite el filtrado y ordenamiento de registros y las demás pantallas del CRUD con Visual Studio y Bootstrap.

Importante: Para que el proyecto pueda conectarse a la base de datos, no olviden cambiar la cadena de conexión "EntidadesDatos" del Entity Framework en el archivo web.config.

Entidades: La capa de entidades contiene todas las entidades que se utilizan en los demás proyectos de la aplicación, tales como las que representan las tablas de la base de datos, los Objetos de transferencia de datos o DTO (Data Transfer Objects) y los atributos a los datos de las clases.
Para el ejemplo, en esta capa agregamos clases parciales donde agregamos validaciones y anotaciones a los atributos de una clase mediante “DataAnnotations”.

Componente: La capa de Componentes, contiene todas las bibliotecas o funcionalidades comunes que se pueden utilizar en cualquiera de las capas anteriores. Por ejemplo: la funcionalidad de la validación, manejo de textos, herramientas de cifrado o clases de registro de excepción se puede añadir a esta capa.

Los archivos del Ejemplo
Descargar script para la creación de la base de datos aquí.
Decargar el código fuente del aplicativo aquí.

Pasos para utilizar el ejemplo:
1. Bajar los archivos
2. Crear una base de datos en SQL server
3. Ajustar la cadena de conexión del Entity Framework en el web.config y App.config
4. Ejecutar el aplicativo.




Para finalizar les recuerdo:

Cada quien tiene su manera de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.

Estos artículos son ejemplos, así que, si tienes una mejor manera de hacerlo o puedes colaborarme con alguna observación, tu comentario es bienvenido.
·         No asumo ninguna responsabilidad por el uso de lo expuesto.
·         Si los artículos son de utilidad, no olvides un “Me Gusta” o dejar algún comentario.
·         Para mantener el blog se usa publicidad de google adsense

·         El Blog utiliza cookies para registrar hábitos de navegación.

lunes, 3 de octubre de 2016

No tener en cuenta acentos ni mayúsculas ni minúsculas en consultas de SQL server

Una de las maneras en que podemos hacer las búsquedas más amplias en nuestras bases de datos es que estas no tengan en cuanta si las palabras están escritas en mayúsculas o minúsculas y adicionalmente que no tenga en cuenta los acentos, por ejemplo: que al consultar retorne la palabra “También” y “TAMBIEN” en una misma consulta.

Hacer esto en SQL server es relativamente sencillo, basta en el momento de crear la base de datos utilizar la opción de intercalación “Modern_Spanish_CI_AI

Esta opción especifica que la base de datos va a usar en la intercalación el idioma español y no va a tener en cuenta las diferencias entre mayúsculas y minúsculas “CI = Case Insensitive” y “AI = Accent Insensitive”.


O bien se puede hacer cuando la base de datos ya está creada mediante la sentencia:
ALTER DATABASE [Nombre de la base de datos] COLLATE Modern_Spanish_CI_AI

Cuando tienes la base de datos creada y quieres omitir la búsqueda por acentos en una columna o columnas específicas, debes acceder al diseño de la tabla y ajustar la intercalación en las propiedades del campo quitando la opción de distinguir acentos.




El ejemplo completo del código fuente en funcionamiento lo puedes encontrar en el siguiente artículo: Arquitectura de N-Capas con Visual Studio .NET y AngularJS


Para finalizar les recuerdo:

Cada quien tiene su manera de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.

Estos artículos son ejemplos, así que, si tienes una mejor manera de hacerlo o puedes colaborarme con alguna observación, tu comentario es bienvenido.
·         No asumo ninguna responsabilidad por el uso de lo expuesto.
·         Si los artículos son de utilidad, no olvides un “Me Gusta” o dejar algún comentario.
·         Para mantener el blog se usa publicidad de google adsense

·         El Blog utiliza cookies para registrar hábitos de navegación.

jueves, 31 de marzo de 2016

Aproximar valores en Excel

La fórmula para redondear valores en Excel se llama Redondear y tiene dos (2) argumentos (Parámetros), el valor y la cantidad de dígitos a redondear, por ejemplo: Si redondeamos el valor 13.456 con el parámetro 2 “Redondear (13,456;2)” el resultado será 13.46 y si el número 3 es 13,453 el resultado será 13.45.

El anterior ejemplo nos permite redondear a dos dígitos decimales de cualquier número digitado.  Además, si te fijas, la fórmula aproxima al entero más cercano.

Ahora, si lo que necesitas es redondear los valores enteros a la centésima más cercana, basta con usar números negativos en el segundo parámetro, por ejemplo: Redondear (450.234; -3) Redondea el número a 450.000. Pero, si lo que necesitas es aproximar a la centésima superior, basta con sumarle al valor 500, así: Redondear (450.234 + 500; -3) El resultado será 451.000.

Resumiendo, La función redondear en Excel, al usar el segundo parámetro con números positivos, nos permite redondear los decimales, y al usar números negativos nos permite redondear valores enteros.

En la ilustración 1, podrás ver unos ejemplos y las formulas en Excel, no olvides que el separador de los parámetros de la fórmula depende de la configuración de tu PC; en este caso estoy usando como separador de decimales la coma, separador de miles el punto y separador de listas el punto y coma.



En el enlace a continuación podrás encontrar un ejemplo de uso de la función redondear en un archivo de Excel, el ejemplo usa la función redondear para elaborar un Presupuesto de propiedad horizontal

Para finalizar, les recuerdo:
·         Cada quien tiene su forma de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.
·         Estos artículos son ejemplos; así que, si tienes una mejor manera de hacerlo, o puedes colaborarme con alguna observación, tu comentario es bienvenido.
·         No asumo ninguna responsabilidad por el uso de lo expuesto.
·         Si los artículos te son de utilidad, no olvides un “Me Gusta”, o dejar algún comentario.
.

viernes, 25 de marzo de 2016

Arquitectura de N Capas: Parte 3 – La Capa de Entidades

Arquitectura de N Capas: Parte 3 – La Capa de Entidades
Ahora que tenemos el proyecto armado y la capa acceso a datos y la de entidades, vamos a separar las entidades que se encuentran dentro del modelo de datos den Entity Framework y colocarlos en un proyecto aparte.
Cuando en la capa de datos creamos el modelo de datos, éste se creó de la siguiente manera:
  • ModelGestion.edmx
  • ModelGestion.Context.cs
  • ModelGestion.Designer.cs
  • ModelGestion.edmx.diagram
  • ModelGestion.tt

Para separar las entidades, trasladamos el archivo ModelGestion.tt de la capa de datos a la capa de entidades, para esto seguimos los siguientes pasos:

  1. Cerrar las ventanas dentro del Visual Studio.
  2. Abrir el explorador de Windows.
  3. Ir a la carpeta de Datos.
  4. Mover el archivo ModelGestion.tt a la carpeta Entidades.
  5. Volver a Visual Studio a la capa de entidades.
  6. Utilizar la opción Show All Files en la capa de presentación para ver el archivo de ModelGestion.tt en la ventana Solution Explorer.
  7. Integrarlo al proyecto mediante la opción de clic derecho Include in Projet .
  8. Abrir el archivo ModelGestion.tt.
  9. Redireccionar, donde está el modelo de datos, de la siguiente manera: conststringinputFile = @"../Datos/ModelGestion.edmx". Lo anterior se hace porque no podemos crearlo mediante: adicionar referencias al proyecto.
  10. Volver a la capa de acceso a datos y eliminar el link roto del archivo ModelGestion.tt .
  11. En el nombre del proyecto de Datos usar clic derecho para incluir la referencia al proyecto Entidades.
  12. Ir a las propiedades del archivo ModelGestion.Context.cs.
  13. En la opción CustomToolNamespace escribir el nombre de la capa de Entidades.
  14. Incluir en la clase de acceso a datos el llamado a Entidades:  using Entidades.
  15. Recompilar la solución.



Las imágenes de los pasos las podrás ver en la Ilustración 1:

Ilustración 1


Ahora que tenemos la capa de entidades agreguemos en ella los metadatos a la entidad Procesos, siguiendo los siguientes pasos:
  1. Agregar al proyecto la referencia a System.ComponentModel.DataAnnotations.
  2. Crear una clase ProcesosMD.cs.
  3. Incluir en la clase:usingSystem.ComponentModel.DataAnnotations.
  4. Volver pública la clase publicclassProcesosMD .
  5. Copiar los atributos de la clase ModelGestion  / Procesos dentro de ProcesosMD .
  6. Adicionar los metadatos.
  7. Al finalizar con la clase ProcesosMD, extendemos las propiedades de la clase

La clase con los metadatos termina así:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;

namespace Entidades
{
    public class ProcesosMD
    {
        [Display(Name = "Id")]
        public int IdProceso { get; set; }

        [Display(Name = "Nombre Proceso")]
        [Required(ErrorMessage = "Campo requerido")]
        public string NombreProceso { get; set; }

        [Display(Name = "Versión")]
        [Required(ErrorMessage = "Campo requerido")]
        public string Version { get; set; }

        [Display(Name = "Fecha de Creación")]
        [Required(ErrorMessage = "Campo requerido")]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")] //Formato de la fecha
        public System.DateTime FechaCreacion { get; set; }
    }

    [MetadataType(typeof(ProcesosMD))]
    public partial class Procesos
    {
    }
}

Algunos de los metadatos que me han sido útiles los puedes encontrar a continuación:
[DisplayName("Nombre del atributo")]
[Required(ErrorMessage = "Campo requerido")]
[MaxLength(50, ErrorMessage = "Máximo 50 caracteres")]
[StringLength(50, ErrorMessage = "Máximo 50 caracteres")]
[RegularExpression(@"[a-zA-ZñÑ\s]{2,50}", ErrorMessage = "Solo letras")]
[RegularExpression("^[0-9]*$", ErrorMessage = "Solo números")]
[Range(0, 999, ErrorMessage = "Máximo tres números")]
[Range(1000000000, 9999999999, ErrorMessage = "10 números")]
[DataType(DataType.Date)] //Fecha
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")] //Formato de la fecha
[DataType(DataType.Url)]
[DataType(DataType.EmailAddress)]


Aquí finalizamos el ejemplo de la capa de Entidades, la cual nos facilita el transporte de los datos entre las demás capas del modelo; recuerden agregar los metadatos a todas las entidades que lo necesite. Así mismo, es mejor hacerlo en archivos separados que agregarlos a la entidad, por la sencilla razón que si hay que cambiar el modelo de datos agregando una propiedad adicional que casi nunca ocurre (Broma), no perderíamos el trabajo elaborado.
Para finalizar les recuerdo:
  • Cada quien tiene su manera de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.
  • Estos artículos son ejemplos, así que, si tienes una mejor manera de hacerlo o puedes colaborarme con alguna observación, tu comentario es bienvenido.
  • No asumo ninguna responsabilidad por el uso de lo expuesto.
  • Si los artículos te son de utilidad, no olvides un “Me Gusta” o dejar algún comentario.

Arquitectura de N Capas: Parte 2 – La Capa de Acceso a Datos


Ahora que tenemos la base de datos en SQL Server 2014, comenzaremos a crear el aplicativo y sus diferentes capas. Para esto iniciamos una solución y en ella colocamos las capas como proyectos independientes. Para facilitar la elaboración de ésta, primero crearemos todas las capas y luego continuaremos con la capa de acceso a datos.

Para la creación del proyecto uso Visual Studio Community 2015.  Los pasos para crear la solución en capas son los siguientes:
  1. Abrimos Visual Studio Community  2015.
  2. Seleccionamos la opción: New Project.
  3. En el árbol de la izquierda seleccionamos: Visual C#/Windows/Class Library.
  4. En la parte inferior de la ventana, damos el nombre al proyecto y a la solución: Datos/Gestión.
  5. En cada proyecto del tipo “Class Library, Cisual Studio, crea una clase Class1.cs, la cual eliminamos en cada capa.
  6. Sobre el nombre de la solución pulsamos clic y agregamos un nuevo proyecto: Entidades.
  7. Sobre el nombre de la solución pulsamos clic y agregamos un nuevo proyecto: Lógica.
  8. Sobre el proyecto de la solución agregamos la capa de presentación: Web/ASP.NET WenApplication.
  9. Cuando aparece la pantalla New ASP.NET Project – Presentacn, seleccionamos la opción MVC, Addunittests y deshabilitamos Host in cloud.
  10. Pulsamos el botón de ChangeAuthentication y seleccionamos en la ventana No Authentication.



Con los pasos anteriores se arma la solución con 5 proyectos.  En la ilustración 1 podrás apreciar las imágenes con los pasos. Continuemos con la creación de la capa de acceso a datos.

Ilustración 1


En la capa de acceso a datos vamos a usar Entity Framework “EF”, éste es un ORM “Objeto de mapeo relacional”; esta utilidad nos permite a los desarrolladores .NET acceder a una base de datos, consultarla, modificar y guardar información.

El EF nos permite desarrollar aplicaciones más rápido; sin embargo, dependiendo de la complejidad de algunas consultas o ejecución de órdenes sobre una base de datos, a futuro puede que tengas que optimizarlas o convertirlas en procedimientos almacenados.

Para incluir el EF en la capa de acceso a datos vamos a hacer lo siguiente:
  1. Con clic derecho sobre la solución, agregamos la funcionalidad de Entity Framework: ManageNugetPackagesforsolution / Browse / Entity Framework en el proyecto de Datos y Presentación.
  2. Clic aceptando la licencia.
  3. Clic sobre el proyecto de Datos y agregamos un nuevo modelo: Entity Framework: Add / New Item / ADO.NET Entity Data Model.
  4. En el asistente de modelo de datos seleccionamos: EF Designerfromdatabase.
  5. Seleccionamos la fuente de datos: Microsoft SQL Server.
  6. Creamos una nueva conexión
  7. Incluimos las propiedades de la conexión: Servidor de la base de datos usuario, contraseña y seleccionamos la base de datos a usar; antes de cerrar comprobamos la conexión a ésta.
  8. Incluimos los datos de la cadena de conexión.
  9. Le damos un nombre a los datos.
  10. Finalmente, adicionamos las tablas al modelo de datos.


Las imágenes de los pasos para incluir el EF en la capa de Acceso a Datos las puedes visualizar en la Ilustración 2.




Una vez tenemos el EF accediendo a la base de datos, construiremos la clase de acceso a datos, para esto pulsaremos clic derecho sobre el proyecto y agregaremos una clase que llamaremos GestionAD, 

En esta clase vamos a colocar las opciones del CRUD (Create, Read, Update y Delete) a las tablas de la base de datos, más adelante las adecuaremos según las necesidades.

Para los comandos del CRUD vamos a emplear LinQ; a continuación, podrás apreciar el ejemplo del CRUD de la tabla Procesos.

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Data.Entity;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;


namespace Datos
{
publicclassGestionAD
    {
GestionEntitiesoDatos = newGestionEntities();

//CRUD De Procesos
#region "CRUD Procesos"
publicList<Procesos>ProcesosConsultar()
        {
var q = from C inoDatos.Procesosselect C;
returnq.ToList();
        }

publicList<Procesos>ProcesosConsultar(Procesos Procesos)
        {
var q = from C inoDatos.ProcesoswhereC.NombreProceso.Contains(Procesos.NombreProceso) select C;
returnq.ToList();
        }

publicList<Procesos>ProcesosConsultarPorID(Procesos Procesos)
        {
var q = from C inoDatos.ProcesoswhereC.IdProceso==Procesos.IdProcesoselect C;
returnq.ToList();
        }

publicProcesosProcesosInsertar(Procesos Procesos)
        {
oDatos.Procesos.Add(Procesos);
oDatos.SaveChanges();
return Procesos;
        }

publicvoidProcesosEliminar(Procesos Procesos)
        {
oDatos.Procesos.Remove(Procesos);
oDatos.SaveChanges();
        }

publicProcesosProcesosActualizar(Procesos Procesos)
        {
oDatos.Entry(Procesos).State = EntityState.Modified;
oDatos.SaveChanges();
return Procesos;
        }
#endregion

    }
}

Personalmente, me gusta agrupar los métodos colocados dentro de la clase con regiones; sin embargo, eso depende de las mejores prácticas de desarrollo del arquitecto donde estás trabajando.

En el artículo de la capa de entidades separaremos las entidades del EF.
Para finalizar les recuerdo:
  • Cada quien tiene su manera de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.
  • Estos artículos son ejemplos, así que, si tienes una mejor manera de hacerlo o puedes colaborarme con alguna observación, tu comentario es bienvenido.
  • No asumo ninguna responsabilidad por el uso de lo expuesto.
  • Si los artículos te son de utilidad, no olvides un “Me Gusta” o dejar algún comentario.


Entrada destacada

Arquitectura de N-Capas con Visual Studio .NET y AngularJS

Este artículo es el primero de una serie de artículos en que quiero explicar mi visión de la programación por capas. La Arquitectura ...