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¶
- Agregamos el siguiente using
using Infra.Data.DependencyInjection
. - Registramos los componentes necesarios para el DataAccessRegistry llamando al metodo
AddDataAccessRegistry()
- El metodo
AddDataAccessRegistry
tiene un paramatro opcionalconfigSectionName="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 |