public IQueryable <T> GetEntities <T>(IQueryStrategy queryStrategy, object additionalQueryData = null) where T : class { Check.NotNull(queryStrategy, "queryStrategy"); queryStrategy.QueryableRepository = this; QueryEventHandler.RepositoryQueriedEventHandler.Handle(new SimpleRepositoryQueryEvent( this, queryStrategy, additionalQueryData)); var result = queryStrategy.GetQueryableEntities <T>(additionalQueryData); return(result); }
public virtual T GetEntity <T>(IQueryStrategy queryStrategy, bool throwExceptionIfZeroOrManyFound, object additionalQueryData = null) where T : class { Check.NotNull(queryStrategy, "queryStrategy"); queryStrategy.QueryableRepository = this; var allResults = queryStrategy.GetQueryableEntities <T>(additionalQueryData).Take(2).AsEnumerable(); QueryEventHandler.RepositoryQueriedEventHandler.Handle(new SimpleRepositoryQueryEvent( this, queryStrategy, additionalQueryData, throwExceptionIfZeroOrManyFound)); if (allResults.Count() != 1 && throwExceptionIfZeroOrManyFound) { var rowsFound = allResults.Count(); throw new EntitySearchRepositoryException(rowsFound, typeof(T).Name, queryStrategy); } var result = allResults.FirstOrDefault(); return(result); }