Skip to content

DataAccessRegistry

La libreria Infra.Data contiene un micro-orm basado en Dapper, el cual se puede utilizar para realizar operaciones contra una de las base de datos soportadas.

Como registrar DataAccessRegistry para ser utilizado en el contenedor de IoC

  1. Agregamos el siguiente using using Infra.Data.DependencyInjection.
  2. Registramos los componentes necesarios para el DataAccessRegistry llamando al metodo AddDataAccessRegistry()
  3. El metodo AddDataAccessRegistry tiene un paramatro opcional configSectionName="DataAccessRegistry" en el cual le podemos pasar el nombre de la sección del archivo de configuración en caso de que no se la default DataAccessRegistry.

Para Platform API:

    public void Configure(IWebHostBuilder builder)
    {
      builder.ConfigureServices((ctx, c) =>
      {
        c.AddDataAccessRegistry();
      });
    }
    public void Configure(HostBuilderContext context, IServiceCollection services)
    {
      // Add your services here....
      services.AddDataAccessRegistry();
    }

En el archivo appsettings.[json|yml] deberemos tener al menos la siguiente configuración:

  {
    "DataAccessRegistry": {
      "ConnectionString": "Data Source=ServerName;Initial Catalog=DataBaseName;User id=UserName;Password=Secret;",
      "ProviderName": "System.Data.SqlClient",
      "MappersAssemblies": [ "NombreDelAssembly" ]
    }
  }
  DataAccessRegistry:
    ConnectionString: "Data Source=ServerName;Initial Catalog=DataBaseName;User id=UserName;Password=Secret;"
    ProviderName: System.Data.SqlClient
    MappersAssemblies:
    - NombreDelAssembly

Luego de esto, estamos en condiciones de poder usar el componente DataAccessRegistry en cualquier componente que tengamos registrado en el contenedor de IoC. En el siguiente ejemplo se puede visualizar con se inyecta el componente en el constructor:

  public class DataAccessTestService
  {
    private readonly IDataAccessRegistry _dataAccessRegistry;

    /// <summary>
    /// Convenience method
    /// </summary>
    private IDataAccess DataAccess => _dataAccessRegistry.GetDataAccess();

    public DataAccessTestService(IDataAccessRegistry dataAccessRegistry)
    {
      _dataAccessRegistry = dataAccessRegistry;
    }
  }

Opciones de Configuración

A continuación veremos un listado de la propiedades que podemos configurar:

Nombre Tipo Default Requerido Descripción
ConnectionString String Null Si Cadena de conexión
ProviderName String Null Si Nombre del Provider
MappersAssemblies List Empty Si Lista de assemblies que contienen clases del tipo ClassMapper
ExpirationPollFrecuencyInSeconds Int 1800 No Cada cuanto se verifican los IDataAccess expirados
ExpirationTimeInSeconds Int 3600 No Tiempo en el que expiran los IDataAccess sin uso
ExpirationEnabled Bool true No Habilita o no la expiracion de los IDataAccess
FailFast Bool true No Permite realizar una conexión de prueba a la BBDD al momento de inicializacion, esto nos permite detectar problemas de conexión rápidamente.

Providers

A continuación se detalla las bases de datos soportadas y el provider name que se debera utilizar en la configuracion.

Base de Datos ProviderName Nuget adicional Requerido
Sql Server System.Data.SqlClient No Requiere
Oracle Oracle.ManagedDataAccess.Client Oracle.ManagedDataAccess.Core
MySql MySql.Data.MySqlClient MySql.Data
Sqlite Microsoft.Data.Sqlite Microsoft.Data.Sqlite
PostgreSql Npgsql Npgsql