Solución de ejemplo del post Lex.DB Generic DataAccess methods

seen from Malaysia
seen from China
seen from China
seen from United States
seen from Brazil

seen from United States
seen from China
seen from Brazil
seen from United States

seen from Singapore
seen from United States
seen from United States

seen from United States
seen from Indonesia

seen from United States
seen from Malaysia

seen from United States
seen from Hungary
seen from United States
seen from Japan
Solución de ejemplo del post Lex.DB Generic DataAccess methods
Lex.DB Generic DataAccess methods
Últimamente estoy trabajando con Lex.DB, una base de datos creada por Lex que ofrece algunas ventajas respecto a SQLite y que tiene un rendimiento muy convincente. Además ofrece la opción de usarse en proyectos Portable Class Library, con lo que todavía se vuelve más interesante.
El caso es que tras darle una vuelta de tuerca al ejemplo escrito en la página de Nokia Developer decidí hacer genéricos los métodos de la clase DataAccess, sobretodo para no escribir una y otra vez los métodos GET, UPDATE y REMOVE y bueno, aquí está el resultado.
public class DataAccess { DbInstance _db; public DataAccess() { _db = new DbInstance("LexDB"); // añadimos todas las tablas _db.Map<Customer>().Automap(i => i.Id, true); _db.InitializeAsync(); } /// <summary> /// Obtiene un ítem por id /// </summary> /// <typeparam name="T"></typeparam> /// <param name="lexId"></param> /// <returns></returns> public Task<T> Get<T>(int lexId) where T : class { return _db.Table<T>().LoadByKeyAsync(lexId); } /// <summary> /// Obtiene todos los ítems de una tabla /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public async Task<IEnumerable<T>> Get<T>() where T : class { return (await _db.Table<T>().LoadAllAsync()).AsEnumerable(); } /// <summary> /// Obtiene el último ítem de una tabla /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public T GetLast<T>() where T : class { return _db.Table<T>().LastOrDefault(); } /// <summary> /// Guarda un ítem /// </summary> /// <typeparam name="T"></typeparam> /// <param name="item"></param> /// <returns></returns> public Task Update<T>(T item) where T : class { return _db.Table<T>().SaveAsync(item); } /// <summary> /// Elimina un ítem /// </summary> /// <typeparam name="T"></typeparam> /// <param name="item"></param> /// <returns></returns> public Task<bool> Remove<T>(T item) where T : class { return _db.Table<T>().DeleteAsync(item); } /// <summary> /// Elimina todos los datos de una tabla /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public Task Purgue<T>() where T : class { return _db.Table<T>().PurgeAsync(); } }