RepoDb es un ORM Open Source para .NET, que viene a cubrir el hueco entre los micro ORM como Dapper, y los ORM completos como Entity Framework.
Está diseñada para ser rápida en ejecución y eficiente en el uso de memoria, consiguiendo resultados similares o inclusos superiores a la popular librería Dapper.
A la vez, RepoDb hace un esfuerzo en mantener la simplicidad de uso. Las funciones proporcionadas se incluyen como métodos de extensión para IDbConnection, de forma similar a lo que hace Dapper.
Por otro lado, además de realizar consultas con Raw Sql, mantiene características de alto nivel similares a los que podemos encontrar en Entity Framework, permitiendo su uso con una sintaxis sencilla a través de funciones lambda y tipos anónimos.
La librería es compatible con las principales bases de datos como SQL Server, SQLite, MySQL/MariaDb, y PostgreSQL. Además, incorpora numerosas características adicionales como cache, tracing, y operaciones Bulk
RepoDb Está disponible para añadirse como paquete Nuget, y es compatible con .NET Standard 2.0, por lo que está disponible en Windows, Linux (Mono) y Android (Xamarin).
Como decíamos al principio, RepoDb es Open Source. El código y la documentación está disponible en la página del proyecto https://github.com/mikependon/RepoDb.
Usando RepoDb
Vamos a ver unos simples ejemplos de uso de RepoDb. Antes de poder emplear RepoDB debemos inicializar la librería, de acuerdo con el proveedor de datos que estemos empleando. Por ejemplo, para el caso de Sql Server haríamos.
RepoDb.SqlServerBootstrap.Initialize();
Esta sentencia debe ejecutarse una única vez, por lo que normalmente la llamaremos desde el AppBoostrapper de la aplicación, en el constructor de la capa de servicios, o en nuestro sistema de resolución de dependencias.
Operaciones CRUD
Una vez iniciada RepoDb, las operaciones CRUD básicas son tan sencillas como.
Crear una entrada
var person = new Person
{
Name = "John Doe",
Age = 54,
CreatedDateUtc = DateTime.UtcNow
};
using (var connection = new SqlConnection(ConnectionString))
{
var id = connection.Insert(person);
}
Leer una entrada
using (var connection = new SqlConnection(ConnectionString))
{
var person = connection.Query<Person>(e => e.Id == 10045);
/* Do the stuffs for person here */
}
Actualizar una entrada
var person = new Person
{
Id = 1,
Name = "James Doe",
Age = 55,
DateInsertedUtc = DateTime.UtcNow
};
using (var connection = new SqlConnection(ConnectionString))
{
var updatedRows = connection.Update<Person>(person);
}
Borrar una entrada
using (var connection = new SqlConnection(ConnectionString))
{
var deletedRows = connection.Delete<Person>(10045);
}
Por supuesto, esto son solo los casos más sencillos que podemos realizar con RepoDb. Para más información, consultar la página web del proyecto, que proporciona abundante documentación sobre las funcionalidades de la librería y su uso.