1. CREAR LA BASE DE DATOS
a. BASE DE DATOS
b. TABLAS
c. PROCEDIMIENTOS
2. CREAR NUEVO PROYECTO EN C# |WINDOWS | MVC .NET 6.0
3. CARPETAS INICIALES (MODELS, CONTROLLERS, VIEWS)
4. EN LA CARPETA MODEL - CREAREMOS EL MODELO con una clase ContactoModel
a. Agregamos las propiedades que son las mismas columnas de la tabla {PROP TAB}
i. Public int IdContacto{get; set}
ii. Public string? Nombre{get; set}
iii. Public string? Telefono{get; set}
iv. Public string? Correo{get; set}
5. En appsettings, definimos la cadena de conexion.
a. "ConnectionString":{
"CadenaSQL":"Data Source=local ; Initial Catalog=DBELIANA; Integrated Security=true"}
6. Instalar el paquete de sqlClient
a. Administrar paquetes nuget y buscar system.data.sqlclient
7. CREAR CARPETA PARA LAS CONEXINES DE CLASE Y ACCESO A LOS SP DE LA BASE DE DATOS.
a. Nueva carpeta>Datos>CLASE "conexion"
i. Utilizaremos ADO.NET
ii. A;adimos la referencia using System.Data.SqlClient;
iii. Creamos una variable tipo privada string
Private string cadenaSQL= string.Empty;
iv. Creamos el constructor para obtener la cadena de conexion
Public Conexion(){
Var builder =new configurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appSettings.json").Build()
//Acceder a la cadena en appsettings
cadenaSQL=builder.getSection("ConnectionStrings:CadenaSQL").Value;
}
v. Crear un metodo para devolver la cadena
Public strin getCadenaSQL(){
Return cadenaSQL;
}
8. CREAR CLASE PARA ACCEDER A LOS PROCEDIMIENTOS ALMACENADOS
a. Agregamos la clase en la carpeta DATOS 'contactoDatos.cs'
Agregamos la referencia modelos
Using CRUDCORE.Models;
using System.Data.SqlClient;
Using System.Data
b. Creamos el primer metodo para consultar los registros
Public List<ContactoModel> Listar(){
Var olista= new List<ContactoModel>();
#Instanciar la clase conexion
Var cn=new Conexion();
Using(var conexion= new SqlConnection(cn.getCadenaSQL())){
Conexion.Open()
SqlCommand cmd= new SqlCommand("SP_LISTAR",conexion);
Cmd.CommandType=CommandType.StoredProcedure;
Using(var dr=cmd.ExecuteReader()){
While (dr.Read()){
oLista.Add(new ContactoModel(){
IdContacto=Convert.ToInt32(dr["IdContacto"]),
Nombre=(dr["Nombre"]).ToString(),
Telefono=(dr["Telefono"]).ToString(),
Correo=(dr["Correo"]).ToString()
})
}
}
}
Return oLista;
}
c. Metodo para obtener un registro especifico
Public ContactModel Obtener(int IdContacto){
Var oContacto=new ContactoModel();
#Instanciar la clase conexion
Var cn=new Conexion()
Using(var conexion=new SqlConnection(cn.getCadenaSQL())){
Conexion.Open()
SqlCommand cmd= new SqlCommand("SP_OBTENER",conexion);
#Parametros del SP
Cmd.parameters.AddWithValue('IdContacto',IdContacto)
Cmd.CommandType=CommandType.StoredProcedure;
Using (var dr=cmd.ExecuteReader()){
While(dr.Read()){
oContacto.IdContacto=Convert.ToInt32(dr["Nombre"]);
oContacto.Nombre=(dr["Nombre"]).ToString();
oContacto.Telefono=(dr["Telefono"]).ToString();
oContacto.Correo=(dr["Correo"]).ToString();
}
}
}
Return oContacto;
}
d. Metodo para guardar Registro en la tabla
Public bool Guardar(ContactoModel oContacto){
Bool rpta;
Try
{
#Instanciar la clase conexion
Var cn=new Conexion()
Using(var conexion=new SqlConnection(cn.getCadenaSQL())){
Conexion.Open()
SqlCommand cmd= new SqlCommand("SP_GUARDAR",conexion);
#Parametros del SP
Cmd.parameters.AddWithValue('Nombre',oContacto.Nombre)
Cmd.parameters.AddWithValue('Telefono',oContacto.Telefono)
Cmd.parameters.AddWithValue('Correo',oContacto.Correo)
#Tipo de comando
Cmd.CommandType=CommandType.StoredProcedure;
#Executar el comando
Cmd.ExecuteNonQuery():
}
Rpta=true
}
Catch(Exception e){
String error=e.Message;
Rpta=false
}
Return rpta;
}
a. Metodo para Editar Registro
Public bool Editar(ContactoModel oContacto){
Bool rpta;
Try
{
#Instanciar la clase conexion
Var cn=new Conexion()
Using(var conexion=new SqlConnection(cn.getCadenaSQL())){
Conexion.Open()
SqlCommand cmd= new SqlCommand("SP_EDITAR",conexion);
#Parametros del SP
Cmd.parameters.AddWithValue('IdContacto',oContacto.IdContacto)
Cmd.parameters.AddWithValue('Nombre',oContacto.Nombre)
Cmd.parameters.AddWithValue('Telefono',oContacto.Telefono)
Cmd.parameters.AddWithValue('Correo',oContacto.Correo)
#Tipo de comando
Cmd.CommandType=CommandType.StoredProcedure;
#Executar el comando
Cmd.ExecuteNonQuery():
}
Rpta=true
}
Catch(Exception e){
String error=e.Message;
Rpta=false
}
Return rpta;
}
Metodo Eliminar Registro
Public bool Editar(int IdContacto){
Bool rpta;
Try
{
#Instanciar la clase conexion
Var cn=new Conexion()
Using(var conexion=new SqlConnection(cn.getCadenaSQL())){
Conexion.Open()
SqlCommand cmd= new SqlCommand("SP_ELIMINAR",conexion);
#Parametros del SP
Cmd.parameters.AddWithValue('IdContacto',IdContacto)
#Tipo de comando
Cmd.CommandType=CommandType.StoredProcedure;
#Executar el comando
Cmd.ExecuteNonQuery():
}
Rpta=true
}
Catch(Exception e){
String error=e.Message;
Rpta=false
}
Return rpta;
}
9. CREAR CONTROLADOR DESDE CERO
a. Controllers>crear nuev controlador MVC en Blanco "MantenedorController.cs"
b. Agregamos las referencias necesarias
Using CRUDCORE.Datos;
Using CRUDCORE.Models;
c. REFERENCIA A LA CLASE CONTACTO DATOS
ContactoDatos _ContactoDatos=new ContactoDatos();
d. Cambiamos el metodo index
Public IActionResult Listar(){
#Mostrara la lista de contactos
Var oLista= _ContactoDatos.Listar();
Return View(oLista);
}
e. Creamos el metodo Guardar() #Para mostrar el formulario
Public IActionResult Guardar(){
#Solo Devuelve la Vista
Return View();
}
f. Creamos el metodo Guardar() #Para obtener los datos del formulario y hacer la accion con la base de datos
[HttpPost]
Public IActionResult Guardar(ContactoModel oContacto){
#Recibe el objeto para guardarlo en base de datos
Var respuesta=_ContactoDatos.Guardar(oContacto)
If(Respuesta)
Return RedirectToAction('Listar');
else
Return View();
}
10. TVISTAS
a. Creamos las vistas. En el metodo Listar damos click derecho crear vista.
Vista RAZOR > PLANTILLA EMPTY
PAGINA DE DISENO>SHARED>LAYOUT.CSHTML
-
Notifications
You must be signed in to change notification settings - Fork 0
Emoole/MVCCRUD
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
