Data Layer Overview

En este proyecto se encuentra toda la capa de acceso a datos. Se utiliza la estructura de mapeo (ORM) Entity Framework Core con enfoque a código (code-first). Es decir, el EF Core mapea a los objetos dentro del dominio como entidades dentro de la base de datos. En el archivo de contexto señalado se provee toda la configuración de las entidades dentro de la base de datos, además, se implementa también un data seeder con el nombre SeedData(), el cual crea un usuario admin por defecto, otorgándole todos los permisos de administración dentro de la aplicación.
Hay que agregar que, esta solución está diseñada bajo el principio de tenencia múltiple, con el objetivo de brindar servicios a diferentes empresas o consumidores. Se utilizan dos tipos diferentes de tenencia múltiple, la primera es la de diferentes inquilinos o tenants en la misma base de datos, es decir que todas las entidades configuradas se encuentras encapsuladas bajo un filtro global, que identifica a que tenant pertenece ese conjunto de información. Este atributo se puede encontrar bajo el nombre de TenantId. Esta estructura de datos se puede observar con mejor claridad en el siguiente diagrama:

El segundo tipo de tenencia múltiple es el de la misma aplicación conectada a diferentes bases de datos, en este caso se utiliza el nombre y dirección de la base de datos para direccionar la aplicación a extraer la información de ese servicio como se observa en el siguiente diagrama:

Toda la información de la base de datos es manejada usando un patrón de repositorios, es decir que para cada entidad en la base de datos existe un repositorio de datos de dicha entidad. Todos los repositorios heredan de una clase Repositorio base la cual implementa a su vez las operaciones básicas que requieren todas las entidades como crear, leer, eliminar y modificar.
Existe una entidad, que cumple con el patrón de diseño de fachada para los repositorios, y contiene una referencia de cada uno de los repositorios, de manera que, de las clases superiores se llame a este servicio de datos y le brinde acceso a la información. Esta clase lleva el nombre de IDataService, dentro de este proyecto.
Adicionalmente en este proyecto se encuentran registradas todas las migraciones realizadas con el package manager de EF Core a la base de datos.
Created with the Personal Edition of HelpNDoc: Easily create CHM Help documents