using CD67.FicheCollege.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; using System.Linq.Expressions; using System.Linq.Dynamic; namespace CD67.FicheCollege.Factory { public class EducfEtablissementFactory : IDisposable { /// /// Context Entity Framework utilisé dans la classe /// protected EducfEntities dbContext; #region Constructeurs /// /// Constructeur sans argument pour les classes sans contexts Entity /// public EducfEtablissementFactory() { } /// /// Constructeur avec initialisation du context Entity Framework /// /// Context Entity Framework public EducfEtablissementFactory(EducfEntities dbContext) { this.dbContext = dbContext; } #endregion #region Méthodes génériques private DbSet ObjectSet { get { return this.dbContext.Set(); } } public virtual etablissement getById(params object[] keyValues) { return ObjectSet.Find(keyValues); } public virtual etablissement getByRne(string codeRne) { return ObjectSet.Where(e => e.numero == codeRne).FirstOrDefault(); } public virtual etablissement getBy(Expression> expression) { return ObjectSet.Where(expression).FirstOrDefault(); } public virtual etablissement getBy(string dynamicExpression) { return ObjectSet.Where(dynamicExpression).FirstOrDefault(); } public virtual IQueryable getAll() { return getAll(null); } public virtual IQueryable getAll(string sortParameter = null) { if (sortParameter != null) return ObjectSet.OrderBy(sortParameter); else return ObjectSet; } public virtual IQueryable getManyBy(Expression> expression, string sortParameter = null) { IQueryable query = ObjectSet.Where(expression); if (sortParameter != null) query = query.OrderBy(sortParameter); return query; } public virtual IQueryable getManyBy(string dynamicExpression, string sortParameter = null) { IQueryable query = ObjectSet.Where(dynamicExpression); if (sortParameter != null) query = query.OrderBy(sortParameter); return query; } #endregion #region Dispose private bool disposed = false; /// /// Fonction pour détruire proprement la classe après utilisation /// /// protected virtual void Dispose(bool disposing) { if (!this.disposed) { if (disposing) { dbContext.Dispose(); } } this.disposed = true; } /// /// Fonction pour détruire proprement la classe après utilisation /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } #endregion } }