Ir al contenido principal

ASP.NET Core - CRUD en MVC con C# - Parte 2

Hola que tal, seguimos el desarrollo e implementación de nuestro CRUD en MVC con C# haciendo uso del ASP.NET Core. En esta segunda parte crearemos la base de datos, cadena de conexión y agregar el modelo de datos a nuestra aplicación web y agregar función de validación del lado del cliente.

Requisitos:
Visual Studio 2019 Community
Aplicación web ASP.NET Core
.NET Core, ASP.NET Core 2.1
Microsoft SQL Server 2017 RTM

Crear la base de datos:
Para ello debes tener SQL Server 2017 RTM (cualquier edición) instalado en su ordenador. Sin embargo, cualquier otra edición de SQL Server como 2016, 2012 funcionará. Puede usar las ediciones Developer y Express de SQL Server 2017, que son gratuitas: descargue SQL Server 2017.

A continuación, debe conectarse al SQL Server, puede hacerlo con el Explorador de objetos de SQL Server en el IDE de Visual Studio (No necesariamente con el IDE del SQL). Estando en Visual Studio Seleccione la opción Ver, Explorador de objetos de SQL Server.

Clic y abrir el Explorador de objetos e SQL Server desde el Visual Studio
Cuando se abra la ventana "Explorador de objetos de SQL Server", haga clic con el botón derecho en el nodo de SQL Server y seleccione Agregar SQL Server.

Clic en Agregar SQL Server..
A continuación, se abre una ventana Conectar. En esta ventana, seleccione la pestaña "Examinar" y luego haga clic en el nodo "Local" para expandir.

Dentro de este nodo, seleccione la segunda opción que dice (localdb) \ MSSQLLocalDB. Después de seleccionarlo, notará que el campo "Nombre del servidor:", en la misma ventana, ahora tiene el valor (localdb) \ MSSQLLocalDB.

Ahora solo tiene que hacer clic en el botón Conectar para conectarse al Servidor SQL. Ver la imagen de abajo:
Se realiza una conexión de modo local
SQL Server se estará conectado en unos segundos y estará listo para usar.

A continuación, haga clic derecho en el nodo Bases de datos y seleccione Agregar nueva base de datos.
Crearemos la base de datos de nombre BD_SEGURIDAD
En el cuadro de diálogo, ingrese BD_SEGURIDAD para el nombre de la base de datos y haga clic en Aceptar para crear la base de datos.

la base de datos de BD_SEGURIDAD se creará y está vacía. Ahora crearemos la primero la tabla "Usuario".

Haga clic en el signo ► que se encuentra en el nombre de la base de datos BD_SEGURIDAD se expandirá distintos nodos. A continuación, haga clic derecho en el nodo Tablas y seleccione Agregar nueva tabla.

Se abrirá una ventana de diseño de tabla en Visual Studio. Aquí agregaremos los campos para la tabla Usuario.

En esta ventana, dentro de la pestaña T-SQL, puede ingresar el siguiente script para crear la tabla "Usuario":

CREATE TABLE Usuario
(
    [Id] INT NOT NULL IDENTITY(1,1PRIMARY KEY,
    [usuario] VARCHAR(50) NOT NULL,
    [contrasena] VARCHAR(250) NOT NULL,
    [intentos] INT NOT NULL,
    [nivelSeg] DECIMAL NOT NULL,
    [fechaReg] DATE NOT NULL DEFAULT GETDATE()
)

Para finalizar la creación de la tabla clic en el botón Actualizar para iniciar el proceso de creación de esta tabla:

Creando la tabla Usuario
Obtendrá un nuevo cuadro de diálogo llamado "Vista previa de actualizaciones de base de datos". Aquí haga clic en el botón "Actualizar base de datos" y en unos segundos se creará la tabla de usuario.


Puede validar y encontrar esta tabla recién creada dentro del nodo "Tablas".
Tabla Usuario creado
La tabla "Usuario" cuenta con 6 columnas que son:

Id: Campo para identificar el registro, llave primaria.
Usuario: Registra la descripción del usuario.
Contrasena: Registra la contraseña del usuario.
Intentos: Cantidad de intentos de acceso del usuario.
NivelSeg: Nivel del seguridad de acceso.
FechaReg: Fecha de registro del usuario.

Agregar la cadena de conexión para la base de datos
La cadena de conexión almacena los parámetros para la base de datos y se utiliza para conectar la aplicación a ella. Estos parámetros son el nombre del servidor y el nombre de la base de datos. También contiene información de seguridad, como el nombre de usuario y la contraseña necesarios para la conexión de la base de datos.

La cadena de conexión se almacena dentro del archivo appsettings.json que se creará en la raíz de la aplicación.

Haga clic derecho en el nombre del proyecto en el Explorador de soluciones y seleccione Agregar, Nuevo elemento. Cuando se abra la ventana Agregar nuevo elemento, seleccione Archivo appsettings.json que se usa para configurar aplicaciones web, finalmente haga clic en el botón Agregar.

Agregar el appsettings.json
El archivo se creará, abrir para editarlo en Visual Studio. Ahora agregue la siguiente cadena de conexión:

{
  "ConnectionStrings": {
"DefaultConnection""Server=(localdb)\\MSSQLLocalDB;Database=BD_SEGURIDAD;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

Definí la conexión de confianza como verdadera en la cadena de conexión para que las credenciales de Windows del usuario actual se usen para autenticarse en el servidor SQL.

Agrega la clase modelo para usuario
Clic derecho en esta carpeta Models y seleccione Agregar, Nuevo elemento.

Al abrir la ventana seleccione una nueva Clase y asigne el nombre de ClsUsuario. Agregue las siguientes propiedades a esta clase:


using DEMO01_CRUD.CustomValidation;
using System;
using System.ComponentModel.DataAnnotations;

namespace DEMO01_CRUD.Models
{
    public class ClsUsuario
    {
        public int id { get; set; }  
        [Required]
        public string usuario { get; set; }
        [Required]
        [ContrasenaValidate(Allowed = new string[] { "hadson1", "erlita1", "cesar1" }, ErrorMessage = "Contraseña no valida")]
        public string contrasena { get; set; }
        [Range(3, 5)]
        public int intentos { get; set; }
        [Required]
        public decimal nivelSeg { get; set; }
        public DateTime fechaReg { get; set; }
    }
}

Esta clase tiene 6 propiedades para las 6 columnas de la tabla Usuario de la base de datos. Aplicamos los atributos [Requerido] en las propiedades usuario, contrasena y nivelSeg, la propiedad intentos se aplica con el atributo [Rango], por lo que solo permitirá valores de 3 a 5.

También tenga en cuenta el atributo [ContrasenaValidate] aplicado a la propiedad contrasena. El atributo [ContrasenaValidate] es un atributo de validación personalizado a través del cual forzaré a la propiedad contrasena a aceptar solo 3 valores que son: "hadson1""erlita1""cesar1"

A continuación, crearemos el atributo de validación personalizado [ContrasenaValidate]. Cree una nueva carpeta en la raíz de la aplicación y asigne el nombre de CustomValidation. Dentro de esta carpeta agregue una nueva clase llamada ContrasenaValidate.cs y agregue el siguiente código:

using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System;
using System.Collections.Generic;
using System.Linq;

namespace DEMO01_CRUD.CustomValidation
{
    public class ContrasenaValidate : Attribute, IModelValidator
    {
        public string[] Allowed { get; set; }
        public string ErrorMessage { get; set; }
        public IEnumerable<ModelValidationResult> Validate(ModelValidationContext context)
        {
            if (Allowed.Contains(context.Model as string))
                return Enumerable.Empty<ModelValidationResult>();
            else
                return new List<ModelValidationResult>
                {
                    new ModelValidationResult("", ErrorMessage)
                };
        }
    }
}

Agregar función de validación del lado del cliente
La función de validación del lado del cliente se realiza mediante "jQuery" y 3 complementos de validación muy conocidos que son:

1. jQuery
2. jQuery Validation
3. jQuery Validation Unobtrusive

Para instalar estos 3, ejecute los siguientes comandos en la ventana "Consola del Administrador de paquetes":
PM> Install-Package jQuery -Version 3.3.1
PM> Install-Package jQuery.Validation -Version 1.17.0
PM> Install-Package jQuery.Validation.Unobtrusive -Version 2.0.20710

Se agregaran las siguiente librerías
En esta segunda parte usted elaboro o aprendió acerca de como:
Crear la base de datos
Agregar la cadena de conexión para la base de datos
Agrega la clase modelo para usuario
Agregar función de validación del lado del cliente

Parte 3: Implementaremos la funcionalidad de crear, listar, actualizar y eliminar usuario.

Comentarios

Entradas más populares de este blog

Habilitar Usuario HR Oracle

Al realizar la primera instalación del Oracle, el usuario HR por defecto está bloqueado y por ende no podemos loguearnos como dicho usuario, lo que debe hacer son los siguiente pasos, aplicables para Linux o Windows.
1. Conectarse como usuario system o sysdba + contraseña haciendo uso del comando connect.
Usuario: system
Password: xxxx 


2. Hacer uso  del comando alter user hr account unlock desbloqueamos la cuenta.
alter user hr account unlock;

3. Escribimos el comando alter user HR identified by hr; con esto estamos diciendo que la contraseña será hr.

alter user HR identified by hr;

4. Ahora testeamos la conexión con el comando - conn hr/hr@xe. Si deseas después de conectarnos se puede realizar un select a la tabla employees del hr.


Resultado del select realizado
5. Con todos estos pasos realizados ya podemos logearnos desde cualquier IDE como el usuario hr  y la contraseña hr que definimos en el paso 3. 
Para finalizar nos loguearemos con el IDE Oracle SQL Developer.

Espero les sea de utilidad,…

Usuario SYS y SYSTEM - ORACLE

Usuario SYS y SYSTEM
Ambos usuario son creados de forma automática al crear la base de datos ORACLE y se otorga el rol de DBA.

SYS (password por defecto: CHANGE_ON_INSTALL).
SYSTEM (password por defecto: MANAGER).

Lo que se recomienda es cambiar el password de ambos usuarios por el tema de seguridad.

SYS:
Todas las tablas y vistas para el diccionario de datos de la base de datos están almacenados en el esquema SYS. Estas tablas y vistas son críticas para el funcionamiento de la base de datos ORACLE. Para mantener la integridad del diccionario de datos, las tablas del esquema SYS son manipulados solo por la base de datos. Nunca se debería modificar algo o crear tablas en el esquema del usuario SYS.

SYSTEM:
El usuario SYSTEM se utiliza para crear tablas y vistas adicionales que muestran información administrativa, tablas internas y vistas utilizado por varias opciones y herramientas de la base de datos ORACLE. No se recomienda utilizar el esquema SYSTEM para almacenar tablas de interés para usu…

Parámetro de entrada y salida – PL/SQL

Parámetro de entrada y salida – PL/SQL:
Los parámetros de entrada y salida no son los parámetros de inicialización de la base de datos ORACLE. Los parámetros de entra y salida son utilizados mayormente en implementaciones de funciones, procedimientos almacenados o bloques de código bajo el lenguaje del PL/SQL, se considera que ambos parámetros (entra y salida) puedan realizar operaciones en el mismo bloque PL/SQL, es decir, si enviamos un parámetro de entrada hará que cumpla cierta operación y retornara los valores de salida de dicha operación procesada de acuerdo al parámetro de ingresado. Es de acuerdo al caso que nos presenta en la implementación.
Algo importante al definir los parámetros, es saber y considerar cuántos tipos de parámetro existe si solo hablamos de entrada y salida, en realidad mi determinación seria 3 tipos:

Parámetros:

IN – entrada
OUT – salida
IN OUT – entrada salida

Parámetro IN – entrada:
El comportamiento común de estés tipos de parámetros es estar siempre pendiente d…