CoreDatabase 2025.5.15
See the version list below for details.
dotnet add package CoreDatabase --version 2025.5.15
NuGet\Install-Package CoreDatabase -Version 2025.5.15
<PackageReference Include="CoreDatabase" Version="2025.5.15" />
<PackageVersion Include="CoreDatabase" Version="2025.5.15" />
<PackageReference Include="CoreDatabase" />
paket add CoreDatabase --version 2025.5.15
#r "nuget: CoreDatabase, 2025.5.15"
#:package CoreDatabase@2025.5.15
#addin nuget:?package=CoreDatabase&version=2025.5.15
#tool nuget:?package=CoreDatabase&version=2025.5.15
SqlParameterExtensions
Una clase estática de extensiones para facilitar la creación y adición de parámetros SQL (SqlParameter
) a una colección de parámetros (IDataParameterCollection
) de forma fluida y legible en aplicaciones .NET que usan ADO.NET.
🚀 Características principales
- Sobrecargas convenientes para
Add
que permiten agregar parámetros SQL con distintos niveles de detalle: solo nombre y valor, tipo SQL, tamaño, precisión y dirección. - Soporte para rangos con
AddRange
, que agrega múltiples parámetros a la vez. - Binding automático de objetos con
BindFrom<T>
que convierte propiedades públicas en parámetros SQL.
📦 Métodos disponibles
Add(string parameterName, object value)
Agrega un parámetro con nombre y valor.
Add(string parameterName, SqlDbType sqlDbType, object value)
Agrega un parámetro con tipo de dato SQL.
Add(string parameterName, SqlDbType sqlDbType, int size, object value)
Agrega un parámetro con tamaño especificado.
Add(string parameterName, SqlDbType sqlDbType, byte precision, byte scale, object value)
Agrega un parámetro con precisión y escala (ideal para decimales).
Add(string parameterName, SqlDbType sqlDbType, int size, object value, ParameterDirection direction)
Agrega un parámetro con dirección (input, output, etc.).
AddRange(IEnumerable<IDataParameter> parameters)
Agrega una colección de parámetros a la colección actual.
BindFrom<T>(T item)
Convierte las propiedades públicas de un objeto en parámetros y los agrega a la colección. Solo se incluyen propiedades primitivas.
Interfaz IMSSqlRepository
La interfaz IMSSqlRepository
define el contrato para el repositorio que permite interactuar con una base de datos SQL Server. Sus responsabilidades incluyen la gestión de conexiones, ejecución de comandos y consultas, manejo de transacciones y operaciones bulk.
Propiedades principales
string ConnectionString
Cadena de conexión actual utilizada para conectar con la base de datos.ConnectionState ConnectionState
Estado actual de la conexión (abierta, cerrada, etc.).
Gestión de conexión y transacciones
void ConnectionClose()
Cierra la conexión si está abierta y no hay transacciones activas.void BeginTransaction()
Inicia una transacción en la conexión actual.void CommitTransaction()
Confirma la transacción activa y cierra la conexión.void RollbackTransaction()
Revierte la transacción activa y cierra la conexión.
Consultas y ejecución
DataTable GetTableFromQuery(string query, Action<IDataParameterCollection> parameter = null)
Ejecuta una consulta SQL y devuelve unDataTable
con los resultados.DataTable GetTableFromStoredProcedure(string procedimientoAlmacenado, Action<IDataParameterCollection> parameter = null)
Ejecuta un procedimiento almacenado y devuelve unDataTable
.T GetItemFromQuery<T>(string query, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Ejecuta una consulta y transforma la primera fila a un objeto del tipoT
.T GetItemFromStoredProcedure<T>(string procedimientoAlmacenado, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Igual que el anterior, pero con procedimiento almacenado.ICollection<Dictionary<string, object>> GetDictionaryFromQuery(string query, Action<IDataParameterCollection> parameter = null)
Obtiene resultados de consulta como una colección de diccionarios con nombre/valor.ICollection<Dictionary<string, object>> GetDictionaryFromStoredProcedure(string procedimientoAlmacenado, Action<IDataParameterCollection> parameter = null)
Igual que el anterior, pero para procedimientos almacenados.ICollection<T> GetItemsFromStoredProcedure<T>(string procedimientoAlmacenado, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Obtiene una colección de objetos tipoT
a partir de un procedimiento almacenado.ICollection<T> GetItemsFromQuery<T>(string query, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Obtiene una colección de objetos tipoT
a partir de una consulta SQL.
Ejecución de comandos
void ExecuteNonQuery(string command, Action<IDataParameterCollection> parameter = null)
Ejecuta comandos SQL que no retornan datos (INSERT, UPDATE, DELETE, etc.).void ExecuteInsert<T>(string tableName, T entity) where T : class, new()
Inserta un único objeto en la tabla especificada usando reflexión.void ExecuteInsert<T>(string tableName, ICollection<T> collection) where T : class, new()
Inserta una colección de objetos en la tabla especificada.void ExecuteStoredProcedureCommand(string procedimientoAlmacenado, Action<IDataParameterCollection> parameter = null)
Ejecuta un procedimiento almacenado que no devuelve resultados.
Operaciones Bulk Copy
void ExecuteBulkCopyToTable(DataTable source, string destinationTable)
Borra la tabla destino, la crea según la estructura de la tabla fuente y realiza la inserción masiva.void ExecuteBulkCopy(DataTable source, string destinationTable)
Inserción masiva desde unDataTable
.void ExecuteBulkCopy(IDataReader source, string destinationTable)
Inserción masiva desde unIDataReader
.
Otros métodos útiles
DateTime GetCurrentDateTime()
Obtiene la fecha y hora actual del servidor SQL.Métodos para crear parámetros SQL para consultas y procedimientos almacenados (
AddParameter
).Métodos para configurar la conexión (
SetDatabaseLogon
).
Métodos Asíncronos de IMSSqlRepository
La interfaz también define métodos asíncronos para mejorar el rendimiento y escalabilidad de las operaciones de base de datos.
Métodos asíncronos principales
Task<T> GetItemFromQueryAsync<T>(string query, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Ejecuta una consulta SQL asíncrona y transforma la primera fila en un objetoT
.Task<T> GetItemFromStoredProcedureAsync<T>(string procedimientoAlmacenado) where T : new()
Ejecuta un procedimiento almacenado de forma asíncrona y devuelve un objetoT
por defecto.Task<T> GetItemFromStoredProcedureAsync<T>(string procedimientoAlmacenado, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Ejecuta un procedimiento almacenado de forma asíncrona y mapea la primera fila a un objetoT
.Task<DataTable> GetTableFromQueryAsync(string query, Action<IDataParameterCollection> parameter = null)
Ejecuta una consulta asíncrona y devuelve unDataTable
con los resultados.Task<DataTable> GetTableFromStoredProcedureAsync(string procedimientoAlmacenado, Action<IDataParameterCollection> parameter = null)
Ejecuta un procedimiento almacenado de forma asíncrona y devuelve unDataTable
.Task<ICollection<Dictionary<string, object>>> GetDictionaryFromQueryAsync(string query, Action<IDataParameterCollection> parameter = null)
Ejecuta una consulta asíncrona y devuelve una colección de diccionarios.Task<ICollection<Dictionary<string, object>>> GetDictionaryFromStoredProcedureAsync(string procedimientoAlmacenado, Action<IDataParameterCollection> parameter = null)
Igual que el anterior, pero para procedimientos almacenados.Task<ICollection<T>> GetItemsFromQueryAsync<T>(string query, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Obtiene una colección de objetosT
de una consulta asíncrona.Task<ICollection<T>> GetItemsFromStoredProcedureAsync<T>(string storedProcedure) where T : new()
Obtiene una colección de objetosT
de un procedimiento almacenado asíncrono.Task<ICollection<T>> GetItemsFromStoredProcedureAsync<T>(string storedProcedure, Func<IDataReader, T> expression, Action<IDataParameterCollection> parameter = null)
Igual que el anterior, pero con mapeo personalizado.
Comandos asíncronos
Task<int> ExecuteStoredProcedureCommandAsync(string storedProcedure, Action<IDataParameterCollection> parameter = null)
Ejecuta un procedimiento almacenado asíncrono que devuelve el número de filas afectadas.Task ExecuteNonQueryAsync(string command, Action<IDataParameterCollection> parameter = null)
Ejecuta un comando SQL que no retorna datos de forma asíncrona.Task ExecuteBulkCopyToTableAsync(DataTable sourceTable, string destinationTable)
Realiza una inserción masiva asíncrona creando la tabla destino.Task ExecuteBulkCopyAsync(DataTable source, string destinationTable)
Inserción masiva asíncrona desde unDataTable
.Task ExecuteBulkCopyAsync(IDataReader source, string destinationTable)
Inserción masiva asíncrona desde unIDataReader
.Task ExecuteInsertAsync<T>(string tableName, T entity)
Inserta un objeto de forma asíncrona en la tabla especificada.Task ExecuteInsertAsync<T>(string tableName, ICollection<T> collection)
Inserta una colección de objetos de forma asíncrona.Task<DateTime> GetCurrentDateTimeAsync()
Obtiene la fecha y hora actual del servidor SQL de forma asíncrona.
Métodos para manejo de tablas en IMSSqlRepository
Además de los métodos para manipulación de datos, la interfaz incluye operaciones para gestionar tablas directamente:
void DropTable(string tableName)
Elimina la tabla especificada de la base de datos.void CreateTable(DataTable sourceTable, string destinationTable)
Crea una tabla en la base de datos a partir de la estructura de unDataTable
.void CreateTable(IDataReader reader, string destinationTable)
Crea una tabla en la base de datos basándose en la estructura delIDataReader
.
Interfaz IServiceProviderKeyed
Esta interfaz proporciona un mecanismo para obtener servicios basados en una clave específica:
public interface IServiceProviderKeyed
{
TService GetKeyedService<TService, TKeyed>(TKeyed key);
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMicrosoftSQL(provider =>
{
// Aquí configuras la instancia concreta de IMSSqlRepository
IMSSqlRepository repo = new MSSqlRepository();
repo.SetDatabaseLogon("Server=myServer;Database=myDB;User Id=myUser;Password=myPassword;");
return repo;
}, ServiceLifetime.Scoped);
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- CoreUtilerias (>= 2025.5.14)
- Microsoft.Data.SqlClient (>= 6.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.3)
- System.Threading.Tasks (>= 4.3.0)
-
net8.0
- CoreUtilerias (>= 2025.5.14)
- Microsoft.Data.SqlClient (>= 6.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.3)
- System.Threading.Tasks (>= 4.3.0)
-
net9.0
- CoreUtilerias (>= 2025.5.14)
- Microsoft.Data.SqlClient (>= 6.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.3)
- System.Threading.Tasks (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated | |
---|---|---|---|
2025.7.17 | 22 | 7/17/2025 | |
2025.7.14 | 43 | 7/14/2025 | |
2025.7.13 | 41 | 7/14/2025 | |
2025.7.9 | 121 | 7/8/2025 | |
2025.7.8 | 116 | 7/8/2025 | |
2025.7.3 | 116 | 7/4/2025 | |
2025.7.2 | 118 | 7/4/2025 | |
2025.6.11 | 271 | 6/11/2025 | |
2025.5.26 | 88 | 5/24/2025 | |
2025.5.25 | 54 | 5/24/2025 | |
2025.5.24 | 53 | 5/24/2025 | |
2025.5.23 | 56 | 5/23/2025 | |
2025.5.20 | 125 | 5/21/2025 | |
2025.5.15 | 215 | 5/15/2025 | |
2025.5.8 | 146 | 5/8/2025 | |
2025.5.6 | 130 | 5/6/2025 | |
2025.5.4 | 136 | 5/4/2025 | |
2025.5.1 | 135 | 5/1/2025 | |
2025.4.30 | 133 | 4/30/2025 | |
2025.4.29 | 122 | 4/27/2025 | |
2025.4.28 | 81 | 4/26/2025 | |
2025.4.27 | 87 | 4/26/2025 | |
2025.4.26 | 87 | 4/26/2025 | |
2025.4.12 | 118 | 4/12/2025 | |
2025.4.4 | 95 | 4/5/2025 | |
2025.3.24 | 483 | 3/25/2025 | |
2025.3.22 | 152 | 3/22/2025 | |
2025.3.11 | 158 | 3/11/2025 | |
2025.3.9 | 164 | 3/10/2025 | |
2025.3.8 | 129 | 3/9/2025 | |
2025.2.16 | 209 | 2/17/2025 | |
2025.2.3 | 102 | 2/3/2025 | |
2025.2.2 | 112 | 2/2/2025 | |
2025.2.1 | 104 | 2/1/2025 | |
2025.1.31 | 91 | 1/29/2025 | |
2025.1.30 | 94 | 1/28/2025 | |
2025.1.29 | 94 | 1/28/2025 | |
2025.1.28 | 94 | 1/28/2025 | |
2025.1.18 | 97 | 1/15/2025 | |
2025.1.17 | 87 | 1/13/2025 | |
2025.1.16 | 79 | 1/13/2025 | |
2025.1.15 | 88 | 1/13/2025 | |
2025.1.14 | 79 | 1/13/2025 | |
2025.1.13 | 84 | 1/12/2025 | |
2025.1.12 | 82 | 1/12/2025 | |
2025.1.7 | 108 | 1/7/2025 | |
2024.12.29 | 106 | 12/28/2024 | |
2024.12.28 | 103 | 12/28/2024 | |
2024.12.19 | 108 | 12/19/2024 | |
2024.12.18 | 106 | 12/19/2024 | |
2024.12.4 | 120 | 12/4/2024 | |
2024.12.2 | 103 | 12/2/2024 | |
2024.11.30 | 110 | 12/1/2024 | |
2024.11.13 | 114 | 11/13/2024 | |
2024.11.12 | 109 | 11/12/2024 | |
2024.10.10 | 121 | 10/11/2024 | |
2024.10.9 | 108 | 10/9/2024 | |
2024.10.7 | 118 | 10/4/2024 | |
2024.10.6 | 101 | 10/4/2024 | |
2024.10.4 | 110 | 10/3/2024 | |
2024.9.8 | 100 | 9/9/2024 | |
2024.9.5 | 120 | 9/6/2024 | |
2024.8.13 | 135 | 8/14/2024 | |
2024.8.2 | 98 | 8/1/2024 | |
2024.8.1 | 92 | 8/1/2024 | |
2024.7.24 | 118 | 7/24/2024 | |
2024.6.9 | 106 | 6/10/2024 | |
2024.4.22 | 132 | 4/23/2024 | |
2024.4.16 | 122 | 4/15/2024 | |
2024.4.15 | 107 | 4/15/2024 | |
2024.4.14 | 132 | 4/14/2024 | |
2024.4.13 | 111 | 4/13/2024 | |
2024.4.12 | 114 | 4/13/2024 | |
2024.4.7 | 118 | 4/8/2024 | |
2024.2.18 | 127 | 2/24/2024 | |
2024.1.2 | 197 | 1/2/2024 | |
2023.12.26 | 135 | 12/26/2023 | |
2023.11.30 | 150 | 12/11/2023 | |
2023.11.28 | 127 | 11/27/2023 | |
2023.11.15 | 171 | 11/16/2023 | |
2023.11.10 | 153 | 11/10/2023 | |
2023.10.29 | 129 | 10/30/2023 | |
2023.8.17 | 154 | 8/18/2023 | |
2023.8.14 | 136 | 8/14/2023 | |
2023.8.9 | 141 | 8/9/2023 | |
2023.8.1 | 163 | 7/31/2023 | |
2023.7.31 | 159 | 7/31/2023 | |
2023.7.30 | 162 | 7/31/2023 | |
2023.7.26 | 169 | 7/26/2023 | |
2023.7.25 | 167 | 7/25/2023 | |
2023.7.11 | 173 | 7/12/2023 | |
2023.7.6 | 160 | 7/7/2023 | |
2023.6.19 | 168 | 6/20/2023 | |
2023.6.18 | 162 | 6/19/2023 | |
2023.5.20 | 170 | 5/16/2023 | |
2023.5.19 | 168 | 5/13/2023 | |
2023.5.14 | 165 | 5/8/2023 | |
2023.5.10 | 172 | 5/4/2023 | |
2023.5.6 | 188 | 4/29/2023 | |
2023.4.28 | 244 | 4/26/2023 |