/// <summary> /// Charge dans une collection tous les beans pour un type suivant /// une liste de critères donnés. /// </summary> /// <param name="collection">Collection à charger.</param> /// <param name="criteria">Liste des critères.</param> /// <param name="queryParameter">Paramètres de tri et de limite (vide par défaut).</param> public virtual void LoadAllByCriteria(ICollection <T> collection, FilterCriteria criteria, QueryParameter queryParameter = null) { using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { _store.LoadAllByCriteria(collection, criteria, queryParameter); tx.Complete(); } }
/// <summary> /// Retourne un bean à partir d'un critère de recherche. /// </summary> /// <param name="destination">Bean à charger.</param> /// <param name="criteria">Le critère de recherche.</param> /// <exception cref="NotSupportedException">Si la recherche renvoie plus d'un élément.</exception> public virtual void LoadByCriteria(T destination, FilterCriteria criteria) { using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { T value = _store.LoadByCriteria(destination, criteria); tx.Complete(); } }
/// <summary> /// Execution de l'intercepteur. /// </summary> /// <param name="input">Paramètres d'appel de la méthode cible.</param> /// <param name="getNext">Delegate à invoquer pour appeler le prochain handler de la chaine.</param> /// <returns>Valeur de retour de la cible.</returns> public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext) { if (input == null) { throw new ArgumentNullException("input"); } if (getNext == null) { throw new ArgumentNullException("getNext"); } if (Transaction.Current != null) { return(getNext()(input, getNext)); } TransactionFlowAttribute[] attrs = (TransactionFlowAttribute[])input.MethodBase.GetCustomAttributes(typeof(TransactionFlowAttribute), true); if (Transaction.Current == null && (attrs.Length != 0 && attrs[0].Transactions == TransactionFlowOption.NotAllowed)) { return(getNext()(input, getNext)); } IMethodReturn retValue; using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { retValue = getNext()(input, getNext); if (retValue.Exception == null && tx != null && Transaction.Current.TransactionInformation.Status != TransactionStatus.Aborted) { tx.Complete(); } } return(retValue); }
/// <summary> /// Retourne un bean à partir d'un critère de recherche. /// </summary> /// <param name="criteria">Le critère de recherche.</param> /// <returns>Bean.</returns> /// <exception cref="CollectionBuilderException">Si la recherche renvoie plus d'un élément.</exception> /// <exception cref="CollectionBuilderException">Si la recherche ne renvoit pas d'élément.</exception> public virtual T GetByCriteria(FilterCriteria criteria) { using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { T value = _store.LoadByCriteria(null, criteria); tx.Complete(); return(value); } }
/// <summary> /// Retourne tous les beans pour un type suivant /// une liste de critères donnés. /// </summary> /// <param name="criteria">Critères de sélection.</param> /// <param name="queryParameter">Paramètres de tri et de limite (vide par défaut).</param> /// <returns>Collection.</returns> public virtual ICollection <T> GetAllByCriteria(FilterCriteria criteria, QueryParameter queryParameter = null) { ICollection <T> coll; using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { coll = _store.LoadAllByCriteria(null, criteria, queryParameter); tx.Complete(); } return(coll); }
/// <summary> /// Charge dans un objet le bean à partir de sa clef primaire. /// </summary> /// <param name="destination">Objet à charger.</param> /// <param name="primaryKey">Valeur de la clef primaire.</param> public virtual void Load(T destination, object primaryKey) { if (primaryKey == null) { throw new ArgumentNullException("primaryKey"); } using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { _store.Load(destination, primaryKey); tx.Complete(); } }
/// <summary> /// Insére l'ensemble des éléments. /// </summary> /// <param name="values">Valeurs à insérer.</param> /// <returns>Valeurs insérées.</returns> public ICollection <T> InsertAll(ICollection <T> values) { if (values == null) { throw new ArgumentNullException("values"); } using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { ICollection <T> result = _store.PutAll(values); tx.Complete(); return(result); } }
/// <summary> /// Supprime un bean à partir de sa clef primaire. /// </summary> /// <param name="primaryKey">Clef primaire de l'objet.</param> public virtual void Delete(object primaryKey) { if (primaryKey == null) { throw new ArgumentNullException("primaryKey"); } using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { _store.Remove(primaryKey); tx.Complete(); } if (_hasCache) { FlushCache(); } }
/// <summary> /// Sauvegarde l'ensemble des éléments d'une association n-n. /// </summary> /// <param name="values">Les valeurs à ajouter via associations.</param> /// <param name="columnSelector">Sélecteur de colonnes à mettre à jour.</param> /// <exception cref="ArgumentException">Si la collection n'est pas composée d'objets implémentant l'interface IBeanState.</exception> public virtual void SaveAll(ICollection <T> values, ColumnSelector columnSelector = null) { if (values == null) { throw new ArgumentNullException("values"); } BeanPropertyDescriptor primaryKey = BeanDescriptor.GetDefinition(typeof(T), true).PrimaryKey; using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { if (typeof(IBeanState).IsAssignableFrom(typeof(T))) { foreach (T value in values) { switch (((IBeanState)value).State) { case ChangeAction.Insert: case ChangeAction.Update: _store.Put(value, columnSelector); break; case ChangeAction.Delete: _store.Remove(primaryKey.GetValue(value)); break; default: break; } } } else { foreach (T value in values) { _store.Put(value, columnSelector); } } tx.Complete(); } if (_hasCache) { FlushCache(); } }
/// <summary> /// Supprimé tous les objets correspondant aux critères. /// </summary> /// <param name="criteria">Critères de suppression.</param> public virtual void DeleteAllByCriteria(FilterCriteria criteria) { if (criteria == null) { throw new ArgumentNullException("criteria"); } using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { _store.RemoveAllByCriteria(criteria); tx.Complete(); } if (_hasCache) { FlushCache(); } }
/// <summary> /// Sauvegarde un bean. /// </summary> /// <param name="bean">Bean à enregistrer.</param> /// <param name="columnSelector">Selecteur de colonnes à mettre à jour ou ignorer.</param> /// <returns>Clef primaire.</returns> public virtual object Save(T bean, ColumnSelector columnSelector) { if (bean == null) { throw new ArgumentNullException("bean"); } object primaryKey; using (ServiceScope tx = new ServiceScope(TransactionScopeOption.Required)) { primaryKey = _store.Put(bean, columnSelector); tx.Complete(); } if (_hasCache) { FlushCache(); } return(primaryKey); }