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
}
}