Science And Technology">
Nothing Special   »   [go: up one dir, main page]

SQL Server Net Core

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 30

Instalar sql server express2019

Espacio para instalación aproximadamente 6.5GB el instalador es de 259MB para el motor de Base de Dato MSSqlServer
Express Edition.

1. Descargar versión Express 2. Elegir instalación Básica


https://www.microsoft.com/en-us/sql-server/sql-server-downloads

3. Aceptar los términos de licencia 4. Elegir la ubicación

5. Esperar que descargue e instale 6. Completada la instalación guardar la información


7. Instalar el manager studio 8. Haciendo click en el botón se abrirá una página web

9. De la página descargar el SSMS 10. Indicar donde instalar el SSMS

11. Finalización de la instalación 12. Abrir el programa SSMS


13. Conectarse por SSMS al motor de base de datos MS Sql Server

14. Conocer el entorno del Microsoft Sql Server Management Studio


Asp.net core y sql server

Que es una base de datos

Ralemente de nada sirve construir toda una aplicación si no tenemos una entidad que se encargue de almacenar toda la
“DATA” de nuestro sistema.

Una base de datos es una colección de información que se organiza de manera que podamos acceder, administrar y
actualizar fácilmente la “DATA” dentro de ella.

Algunas veces son conocidos como DBMS (Database Management System) – Sistema de Administracion de Base de
Datos y existen diferentes gestores, administradores de base de datos, en el curso trabajaremos el MS SqlServer,
también existe el MySQL, Oracle, PostgresQL.

En conclusión, las herramientas de software de Base de Datos se utilizan principalmente para almacenar, modificar,
extraer y buscar información dentro de una Base de Datos.
Existen diferentes tipos de base de datos de objetos como MongoDB, FireBase, Cosmos de Azure, también base de datos
relacionales como MySQL, PostgreSQL, Oracle o MSSQL Server

Una base de datos relacional es un conjunto de tablas descritas formalmente desde las cuales se puede acceder a los
datos o re-ensamblarlo de muchas maneras diferentes.

La interfaz de programación de usuario y aplicación estándar de una base de datos relaciona es el lenguaje de consulta
estructurado – SQL (Structured Query Language).

Este es el lenguaje que se utiliza para poder crear tablas, insertar datos dentro de las tablas, actualizar la DATA dentro de
las tablas, extraer la DATA insertada en las tablas.

En conclusión, para poder administrar completamente una base de datos relacional como MSSQL, Oracle, Mysql o
PostgreSQL, necesitamos conocer SQL para poder crear nuestras entidades, las relaciones entre estas entidades y poder
ingresar, actualizar o extraer la información que deseamos.

Nosotros conocemos lenguajes OO como Java y C#, entonces como hacemos para mover o representar dentro de mi
código (C#, java) estas estructuras de nuestra base de datos, porque recordemos que hay una gran diferencia entre un
modelo relacional como MSSQL Server con un modelo OO (java, c# o Node.js)
Diferencias entre Relacional vs Objetos

MSSqlServer para poder manejar las transacciones (creación, inserción o actualización de la DATA) utiliza el lenguaje SQL
mientras que en .NET Core para realizar estas mismas tareas utiliza el lenguaje C#.

Usualmente al programar OO se usan patrones de diseño para poder representar un mejor modelo OO.

Dentro MSSqlServer el principal repositorio para almacenar la DATA es una TABLA, mientras para un lenguaje OO el
principal elemento de representación es una CLASE.

Para poder identificar un valor único dentro de una tabla es a través de llaves primarias, en .Net Core es instanciar una
clase para poder tener un valor único.

Las relaciones entre tablas dentro de MSSqlServer se llevan a cabo por claves foráneas en .Net Core se lleva a cabo a
través de referencia de atributos dentro de una clase.

Para poder extraer la DATA dentro de una BD usamos condiciones lógicas incorporadas dentro del lenguaje SQL, una de
las más famosas es la sentencia WHERE. En Net Core se utiliza una librería llamado Link, permite trabajar y condicionar
la lógica de un conjunto de datos.

Como hacer para que ambos modelos puedan conversar entre si

¿Qué necesitamos crear para poder mover cierta DATA de una tabla de MSSqlServer y pasarla a una clase .Net Core?

Para realizar esto necesitamos implementar el Entity Framework Core, que es una librería que permite acceder a base
de datos, está diseñada como un ORM (Object Relational Mapper) mapeador de objetos relacional, haciendo un mapeo
entre los dos mundos el RELACIONAL y el de OBJETOS.
Ejemplo:

Tenemos una tabla Curso que tiene como llave primaria CursoID compuesto de otras columnas Titulo, Descripcion,
FechaPublicacion y FotoPortada, tenemos que crear dentro de Entity Framework una clase que se va a llamar Curso con
las propiedades (CursoID, Titulo, Descripcion, FechaPublicacion y FotoPortada) como se nota tiene los mismos nombres.

CREACION DE BASE DE DATOS Y LA TABLA

Conectarse al servidor de base de datos, a través del Microsoft Management Studio:

Nos aparecen varios nodos (árbol de subdirectorios del motor de base de datos) y elegimos Databases (doble click) nos
desglosa un par de carpeta de soporte, se recomienda no tocarlas para nada, sobre Databases botón derecho y elegimos
New Database …
Luego nos despliega una pantalla donde tenemos que colocar un nombre a nuestra base de datos como ejemplo
colocaremos “CursosOnline” y le damos click en OK y nos creará la base de datos.

Dentro de la base de datos creada al desplegar veremos varias carpetas, donde generalmente el DBA (DabaBase
Administrator) es el que se encarga de administrarlas, en nuestro caso solo nos interesara la sección de Tables (Tablas) y
Programmability (Programación).

 En la sección Tables, como su nombre indica crearemos todas las tablas y la relación que tendrán entre ellas,
aquí también se crean los triggers.
 En la sección Programmability, para crear procedimientos almacenados, funciones, etc.

En el ejemplo que haremos será que el Entity Framwork Core se encargue de toda la lógica de programación, de
implementar las business rule (las reglas de negocio).

Dentro de Table damos click derecho elijo New -> Table:


Comenzamos a ingresar las columnas de la tabla tal como sigue:

Donde:

 CursoId entero
 Titulo nvarchar(500)
 Descripcion nvarchar(1000)
 FechaPublicacion datetime
 FotoPortada varbinary(1000)

El ultimo campo guardaremos la imagen en el motor de la base de datos.

Ahora debemos indicar cual campo será la llave primaria, click sobre CursoId, click derecho y elegimos Set Primary Key
Ahora, necesitamos que CursoID sea autogenerado, esto significa que automáticamente al registrar un Curso se genere
un nuevo número de Id para el campo CursoID, para que esto sea automático debemos hacer lo siguiente,
seleccionamos CursoID para tener las propiedades de la columna y modificamos como esta en la imagen:

Buscamos la propiedad Identity Specification, y cambiamos No por YES.

Todos estos cambios los guardamos, hacindo click Control-S o en el icono del Disket, luego escribimos el nombre de la
tabla que va a ser Curso.

Para verificar la creación de la tabla CURSO tenemos que hacer un Refresh sobre Tables:
Si queremos ingresar datos a la tabla, simplemente damos click derecho sobre dbo.Curso y luego elegimos la opción Edit
Top 200 Rows, agregamos los siguiente datos

Se abre un asistente y agregamos los siguientes datos:

En foto de portada lo dejamos por el momento en Null y para que se grabe presionamos la tecla TAB.
Si queremos ver los datos dentro de la tabla creada:
CREAR UNA SOLUCION Y UN PROYECTO ASP.NET CORE

Ya creamos una base de datos y una tabla cursos e ingresamos datos.

Ahora vamos a crear un proyecto para leer los datos en la base de datos.

La estructura de una solución .net:

 Solución .Net Core (.sln) este archivo se encarga de administrar


un conjunto de proyectos y las dependencias entre ellos.
 Proyecto(.csprj) Este es un proyecto en si especifico, dentro del
proyecto vamos a escribir en código toda la lógica que necesita
nuestra aplicación además como los recursos imágenes, archivos,
archivos de configuración, etc existen diferentes tipos de
proyectos para crear librerías, proyectos pre-determinados MVC,
proyectos react, angular, Microsoft nos brinda una gran variedad
de opciones para desarrollar nuestra aplicación y se adecue a
nuestras necesidades
 Vamos a crear un proyecto que ejecute una aplicación de consola
y que permita leer datos desde SQL Server y convierta el modelo
relacional a objetos.
Ahora crearemos una solución en blanco:

1) Abrir visual studio 2019 y elegir Continuar sin codigo 2)Se abrirá un proyecto vacio e ir a la opción File o
Archivo

3)Archivo y Proyecto 4)Los combos deben estar en esas opciones y hacer


doble click en la solución en blanco

5) Colocar el nombre a la solución NetCore, luego click en 6) Se creará la solución:


el botón Crear

7) Haciendo click derecho en la solución para crear un 8) Agregar un proyecto de consola llamado LeerData
proyecto
10) y quedara de la siguiente manera:

Instalar Librerías de ASP.Net Core Entity Framework

El siguiente diagrama nos ayudará a comprender paso a paso como Entity Framework puede realizar transacciones a una
base de datos MS SqlServer.

Primero, el comando que inicia toda transacción en nuestro modelo es AsNoTracking(), este método lo primero que
hace es buscar entidades dentro de nuestro proyecto que a futuro van a ser un Match con las tablas de MS SqlServer.

¿A que llamamos Entidad?, es una clase de tipo DotNet, esta clase para que se convierta en entidad necesita ser definida
como un tipo DbSet, en la figura lo que hace AsNoTracking() es buscar a la clase Curso y también se está definiendo
como DbSet, en base a esta entidad ejecuta un comando invocando al objeto a la librería Link, lo que hace la librería
Link es crear una consulta en código SQL es decir traduce el código C# y lo convierte en un código SQL. Y este código es
el que envía al servidor de base de datos. Lo que hace luego MS SqlServer es devolver los datos de la consulta que
estamos haciendo y lo que hace EntityFramework es tomar esos datos que están en formato relacional y lo convierte a
un modelo de objetos, lo convierte en un arreglo de objetos Curso. Ahora teniendo un arreglo de tipo objeto Curso ya
podemos tomar esa data y trabajar desde C#.

Ahora agregamos los siguientes paquetes por Nuget, con la última versión en este momento la 3.14

 Microsoft.EntityFrameworkCore
 Microsoft.EntityFrameworkCore.SqlServer
 Microsoft.EntityFrameworkCore.Tools
Crear cadena de conexión a la Base de Datos

1. Creamos la clase Curso dentro del proyecto LeerData:


2.- Creamos una clase encargada de tener la configuración de conexión hacia MSSQLServer, que hereda de DbContext.
Una instancia del DbContext representa una sesión con la base de datos a la cual queremos conectarnos y consumir o
agregar recursos. Un DbContext corresponde a la representación de la base de datos y tiene acceso a la colección de
Tablas, Vistas, etc. Un DbSet dentro de un DbContext representa una tabla o una vista. Para que trabaje necesitamos
importar las librerías de DbContext.

Realizamos una conexión al servidor MSSqlServer desde Visual studio, eligiendo el Explorador de Servidores y agregando
nuestra base de datos como se ven en la figura:

Y aqui tenemos la cadena de conexion, que sera


diferente para cada uno de ustedes variando solo en el
servidor:
Cadena de Coneccion: Data Source=Ghost;Initial
Catalog=CursosOnline;Integrated Security=True

Vamos a crear la clase CursoDbContext:

Ahora ya tenemos configurada nuestra conexión a la base de datos y también la definición del elemento que queremos
conectarnos la tabla Curso que esta siendo representada por Curso en C#.
Mapeando una Tabla en SqlServer con EntityFramework

Y lo que haremos será traer los datos desde el principal;

¿Por que usamos el método AsNoTracking()? Permite o evita almacenar en el cache de la transacción la Data que está
devolviendo el SqlServer, pedimos la Data e inmediatamente entregue, no le indicamos que la guarde en memoria en el
EntityFramework.

Luego ejecutamos y nos traerá los datos.

Relaciones entre entidades en EF Core

Cada una de las tablas tiene una lógica interna, pero de nada sirve si es que estas tablas no pueden relacionarse entre sí
y compartir información entre ellas entonces. ¿Cómo haremos para crear esas relaciones entre tablas?
En el modelo relacional lo podemos hacer por:

 La clave primaria, se caracteriza por representar de manera única cada fila de una tabla.
 La clave foránea, es un campo que señala la clave primaria de otra tabla. El propósito de la clave foránea es
asegurar la integridad referencial de los datos por ejemplo si vemos la tabla Comentario tiene como clave
foránea CursoId de la tabla Cursos.

Existen tres tipos de relaciones que podemos crear entre entidades.

1. La relación 1:1 (el registro de una tabla se asocia a uno y solo un registro de otra tabla, ejemplo Precio – Curso

Para hacer esto vamos a ejecutar un script SQL


ALTER TABLE Precio ADD CONSTRAINT FK_PRECIO_CURSO FOREIGN KEY(CursoId) REFERENCES (CursoId)

1)Ejecutamos el Script 2) Agregamos datos a la tabla Precio respetando la


relación con Curso:
En visual studio en la clase CursoDbContext.cs, agregamos la entidad Precio

Ahora en el Program.cs, haremos una consulta para ver la relación entre Curso y Precio:

Como verán Include sirve para hacer la relación con la Clase Precio

2.- La relación Uno a Muchos

La relación Uno a Muchos ocurre cuando una tabla “A” puede enlazar múltiples registros en una tabla “B”, pero la tabla
“B” puede tener solo un registro que corresponda.

En la imagen tenemos la Tabla Curso, un curso puede tener muchos Comentarios, por otro lado, un comentario puede tener solo un
curso.
Para implementar entramos a nuestro Managament SQL, para crear la tabla Comentario:

1) Agregar campos 2) A la columna ComentarioId declararle como llave primaria

3) Asignar al campo ComentarioId AutoIncremento 4)Guardar con el nombre de Comentario

Para verificar la creación de la tabla Click con el botón derecho en la base de datos CursosOnline y hacer un Refresh.

Ahora vamos a crear el constraint (la llave foránea) lo haremos en sql server y ejecutamos el siguiente script:
ALTER TABLE Comentario ADD CONSTRAINT FK_COMENTARIO_CURSO FOREIGN KEY(CursoId) REFERENCES
Curso(CursoId)
Ahora ingresamos datos en la tabla Comentarios:

Ahora creamos la clase Comentario y agregamos en CursoDbContext el DbSet para Comentario:

Asi lo tenemos ahora:

Tomar en cuenta que ahora Curso tiene una Colección de Comentarios y la tabla Comentario está relacionada con
CursoId.

Y ahora modificaremos la clase Program.cs para poder listar este tipo de relación:
3.- La relación Muchos a Muchos

La relación Muchos a Muchos ocurre cuando una Tabla “A” puede enlazar a múltiples registros en una Tabla “B” y
viceversa.

Como vemos en la imagen, un Curso puede tener muchos Instructores y a su vez un Instructor puede tener muchos
cursos, según las reglas de normalización, cuando sucede este tipo de relación muchos a muchos, lo que se debe hacer
es crear una nueva entidad que permita almacenar las relaciones que existen entre Curso e Instructor.

Entramos a Microsoft Sql Server Manager y creamos las tablas:

 Instructor
 CursoInstructor
 Y sus relaciones correspondientes
1) Agregar los campos 2) Definir la llave primaria

3) Definir esta llave como autogenerar 4) Ctrl-S o click en el disket para guardar y dar nombre

Ahora vamos a crear una nueva Tabla CursoInstructor


5) Agregar los campos, los índices no serán 6) Las columnas serán llaves primarias, tenemos que
autogeneradas seleccionar ambas Ctrl y click en las columas
7) Ctrl-S o Disket para guardar 8) Hacemos un Refresh

9) Ahora vamos a crear las relaciones (clave foranea) hacemos click en New Query
ALTER TABLE CursoInstructor ADD CONSTRAINT FK_CURSO_INSTRUCTOR_CURSOID FOREIGN KEY (CursoId)
REFERENCES dbo.Curso(CursoId)

Tambien creamos la clave foranea para Instructor


ALTER TABLE CursoInstructor ADD CONSTRAINT FK_CURSO_INSTRUCTOR_INSTRUCTORID FOREIGN KEY
(InstructorId) REFERENCES dbo.Instructor(InstructorId)
10) Agregamos los datos necesarios 11)los datos de la tabla

11) Ahora queremos que Nestor, Javier y Daniela sean los 12) Vemos los datos que hemos introducido
instructores del Primer curso “Curso .Net Core Entity
Framework”
13) Ahora Ana será instructor del curso de Code Clean y 14) Vemos los datos que hemos introducido
también Javier sea el instructor del curso Code Clean

El siguiente paso es crear las clases para que reconozca en Entity Framework Core.

Debemos crear las referencias para que quede igual a la relación:


Nos enfoquemos en la tabla CursoInstructor.

Las propiedades public int CursoId y public int InstructorId son llaves primarias y llaves foráneas al mismo tiempo.

Que es lo que pasa, que dentro de Entity Framework debemos indicarle que no tiene una única llave primaria, sino que
tiene dos (compuesta).

De lo contrario nos saldrá un error.

Entramos a la clase CursoDbContext para indicar esta propieda.

También en la clase CursoDbContext debemos agregar las clases que hemos creado:

Y ahora modificaremos la clase Program.cs para poder listar este tipo de relación, vamos a crear una consulta que
retorne la relación de Cursos junto con el nombre del Instructor.

Recordemos algo que la Tabla CursoInstructor no tiene el nombre del Instructor solo tiene el Id el código del instructor,
si quisiéramos obtener el nombre lo que debemos hacer es agregar otra “inclusion” extra para que nos retorne también
la entidad instructor y de esta forma obtendremos el nombre y el apellido y los demás datos que necesitemos del
Instructor, el querey que vamos a crear comienza desde la tabla Curso.
Operaciones CRUD con .Net Core Entity Framework
El siguiente paso es representar en Enity Framework

También podría gustarte