using System.Web; using BeWo.Data.Entities; using BS.Shared; using NHibernate; using NHibernate.Criterion; namespace BeWo.Data.Access { public abstract class AbstractBaseDAO { protected ISession Session { get { if (HttpContext.Current == null) { // WCF Request // DefaultHibernateSessionManager, wenn der SessionOperationContext null ist return WCFHibernateSessionManager.CurrentSession ?? DefaultHibernateSessionManager.CurrentSession; } else { // ASP Request return HttpContext.Current.Items["hibernateSession"] as ISession; } } } protected ICriteria CreateCriteria() where T : BeWoEntityBase { return this.Session.CreateCriteria(typeof(T)); } protected ICriteria CreateCriteria(string alias) where T : BeWoEntityBase { return this.Session.CreateCriteria(typeof(T), alias); } protected ICriteria CreateCriteriaIsActive() where T : BeWoEntityBase { return this.Session.CreateCriteria(typeof(T)).Add(Restrictions.Eq(BeWoEntityBase.PropertyName_IsActive, ActivationTypeId.Active)); } protected ICriteria CreateCriteriaIsActiveOrArchived() where T : BeWoEntityBase { return this.Session.CreateCriteria(typeof(T)).Add(Restrictions.Or(Restrictions.Eq(BeWoEntityBase.PropertyName_IsActive, ActivationTypeId.Active), Restrictions.Eq(BeWoEntityBase.PropertyName_IsActive, ActivationTypeId.Archived))); } private void CheckSession() { //WORKAROUND: Bei geleichzeitigen Asynchronen Calls kann e } } }