je voudrais étendre certaines méthodes de ORMLite basées sur la mise en œuvre de l'objet. Par exemple,mise en œuvre de requête personnalisée ormlite basée sur l'interface de classe
J'ai une interface:
public interface IHaveTimestamps
{
DateTime CreatedOn { get; set; }
DateTime UpdatedOn { get; set; }
}
J'aimerais maintenant remplacer la méthode Db.Insert<T>()
que si T
implémente IHaveTimestamps
et pour d'autres cas de T, il faut effectuer la Insert
en fonction du comportement par défaut .
Il en est ainsi que je peux centraliser la définition des valeurs CreatedOn et UpdatedOn, plutôt que de faire que partout manuellement. Puis-je le faire en surchargeant la méthode Insert/Update de sorte que tout ce que je devrais faire est de mettre à jour les modèles à hériter de l'interface et toutes les opérations de la DB prendront soin de lui-même, ou devrais-je faire quelque chose? comme ceci:
public static class DbExtensions
{
public static long MyInsert<T> (this IDbConnection dbConn, T obj, bool selectIdentity = false) where T : IHaveTimestamps {
obj.CreatedOn = DateTime.UtcNow;
obj.UpdatedOn = DateTime.UtcNow;
return dbConn.Insert<T>(obj);
}
public static long MyUpdate<T> (this IDbConnection dbConn, T obj) where T : IHaveTimestamps {
obj.UpdatedOn = DateTime.UtcNow;
return dbConn.Update<T>(obj);
}
}
C'est sooooooooooo intelligent! – labilbe
très cool, merci! – vonec
@mythz est-il possible d'injecter l'objet de demande dans ces filtres afin que je puisse implémenter des requêtes qui sont automatiquement filtrés par l'utilisateur/locataire Id – vonec