Crearemos un nuevo proyecto ASP.NET Web Application (.NET Framework) con MVC

1
3

Una vez creado, vamos a descargar los Nugets que necesitamos para nuestro proyecto. Es importante que el archivo Web.config esté cerrado al descargarlos para que luego no haya problemas o errores por que no aparecen en nuestro Web.config

4

Verificamos que una vez instalado, dentro de la carpeta App_Start nos haya creado dos clases: UnityConfig.cs y UnityMvcActivator.cs
Esto es solo como referencia para saber que nos ha instalado correctamente, en otro momento veremos lo que tenemos que hacer con esos archivos…

Revisamos también que en el Web.config se haya incluido el provider de mysql

5

Vamos a crear la conexión con la BBDD, para ello vamos a Server Explorer para añadir la conexión.

6

Ingresamos la Configuración, en nuestro caso vamos a estar de manera local e introduciremos los datos de Autenticación de SQL.

Si se ha hecho correctamente, en el desplegable de database nos debe aparecer todas las Tablas que tenemos en SQL. Seleccionamos la que necesitamos, en este caso es ESCUELA que es la que utilizaremos para nuestro ejemplo

7

Si todo ha ido bien nos deberá aparecer reflejada la conexión correctamente.
Llegados a este punto vamos a configurar la cadena de conexión dentro del archivo de configuración de nuestro proyecto Web.config

Vamos a las propiedades de esta y copiamos la cadena de conexión para incluirla en el archivo de configuración.

8

Vamos al Web.config a incluir nuestras conexiones las BBDD que usaremos.

Por cada contexto que vamos a manejar con acceso a cada BBDD debemos tener una cadena de conexión añadida, donde cada uno de ellos hará referencia a esta. Añadiremos dos cadenas de conexión la de sql y mysql que son las que usaré en este ejercicio.

9

Podemos decir que la configuración para la conexión está hecha.
Ahora en la carpeta Models vamos a crear la Clase con la que mapearemos la BBDD

10

Una vez creado el Modelo. Vamos a Crear la Interface de los contextos que usaremos, la llamaremos IContextEscuela. Lo haremos dentro de una carpeta que llamaremos Data. Es importante que al crear la Interface la pongamos publica ya que por defecto esta no aparece así.

11

El DbSet hereda del DbContext, lo podemos usar gracias al Entity Framework que descargamos inicialmente, es el puente entre la base de datos y el modelo con el cual podemos realizar las acciones entre ellas. En este caso lo referenciamos para que haga la consulta de Alumnos únicamente.

Ahora crearemos cada uno de los contextos que atacaran a las BBDD especificas.

12

Cada uno de los contextos hace referencia a su cadena de conexión con cada BBDD, como recordamos, este paso lo hicimos en el Web.config previamente. Ambos son completamente iguales en cuanto a métodos y que necesitan apuntar a una conexión, lo único es que al contexto de MySql hay que indicar que atacará a MySql.
Como vimos en el vídeo gráfico, vamos a crear una Interfaz también para el Repositorio. Lo llamaremos IRepositoryEscuela

Aquí referenciaremos los métodos que contendrá cada uno de los repositorios. Lo creamos una carpeta Repositories y dentro introduciremos tanto la interface como la clase.

13

Como solo vamos a mostrar los datos solo referenciaremos este método, pero acá que donde estarían los crear, editar, eliminar, actualizar, etc…
Creamos el RepositoryEscuela que es donde definirá estos métodos con las consultas a las BBDD. Solo usaremos un repositorio en este caso que se encargara de usarse en cualquier contexto que le mandemos.

Como había comentado anteriormente el Repositorio depende del contexto, debemos hacer la inyección de dependencia con la Interfaz del Contexto. Esto lo hacemos en el constructor.

14

Pasado este paso vamos a crear el controlador, o más bien vamos a usar el controlador existente.

Hacemos la Inyección de dependencias en el constructor, recordemos que el controlador depende del Repositorio, en este caso dependerá de la Interface.

15

Usaremos solo dos vistas, la de Index por defecto y la de Alumnos que sera la que nos mostrara los datos de los alumnos. Pasamos la lista de Alumnos gracias al repositorio y creamos la vista mediante Scafollding como una lista del modelo Alumno.

16

Muy bien, ahora lo que tenemos que hacer es la inyección del control (Container) Que es el objeto que resuelve las dependencias.
Recordemos que para este ejemplo hemos usado Unity así que iremos al archivo que se creó en el momento que instalamos el Nuget UnityConfig.cs 

Creamos un método que llamaremos RegisterDependencies (Podemos llamarlo como queramos). Este método es que referenciaremos en el Globalasax.exe donde indicaremos que vamos a registrar las dependencias para nuestra aplicación.

17

Como hemos mencionado anteriormente, lo único que nos falta es referenciar las dependencias en el Globalasax.exe  en el cual llamaremos al método que hemos creado en UnityConfig.cs.

18

Con esto ya lo tenemos todo. Lo único que nos faltará es en el _Layouth crear un enlace para que nos muestre la vista que hemos creado.

Ejecutamos. Recordemos que hemos referenciado el contexto ContextoEscuelaSql que ataca a Sql.

19

Ahora vamos a usar el Contexto ContextoMySql que ataca a MySql. Como había dicho anteriormente, esto lo hacemos en el fichero UnityConfig.

20

Ejecutamos…

21

Tengo los mismos datos en ambas BBDD, lo único que he cambiado es para que se diferencie una de otra es que le he añadido a la de MySql esta referencia en el nombre como se ve en la imagen.

Esto seria todo, espero que les haya podido servir de gran ayuda. Muchas gracias!

#MCSD
#70-486
#.NET
#Visual Studio

Autor: José Ignacio Castrillón Correa.
Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin.
Centro: Tajamar.
Año Academico: 2019-2020.
Linkedin: https://www.linkedin.com/in/jose-ignacio-castrillon-correa-5921641a2
Enlace GitHub: https://github.com/ignacio0828/InyeccionDependenciasUnity
Recursos Utilizados: https://es.wikipedia.org/wiki/Inyecci%C3%B3n_de_dependencias
https://www.genbeta.com/desarrollo/que-es-la-inyeccion-de-dependencias
https://www.youtube.com/results?search_query=inyeccion+de+dependencias+c%23

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.