public void QueryAll_with_pagination() { var querySerializer = new MSolrQuerySerializer(); querySerializer.serialize += _ => "id:123456"; var serviceLocator = new MServiceLocator(); serviceLocator.getService = MServiceLocator.Table(new Dictionary <System.Type, object> { { typeof(ISolrReadOnlyOperations <Entity>), mockSolr }, { typeof(ISolrQuerySerializer), querySerializer }, }); ServiceLocator.SetLocatorProvider(() => serviceLocator); mockSolr.queryStringOptions += (s, o) => { Assert.Equal("id:123456", s); Assert.Equal(5, o.Rows); Assert.Equal(3, o.Start); Assert.Equal(1, o.OrderBy.Count); Assert.Equal("pepe asc", o.OrderBy.First().ToString()); return(new SolrQueryResults <Entity>()); }; mockSolr.queryStringOptions &= x => x.Expect(1); using (var session = new SolrSession(sessionFactory.OpenSession())) { var entities = session.CreateSolrQuery(new SolrQueryByField("id", "123456")) .SetMaxResults(5) .SetFirstResult(3) .SetSort(Order.Asc("pepe")) .List <Entity>(); } }
public void CanGetCredit() { //save sample credit in the db UnitOfWork.Current.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); Credit credit = SaveNewCredit(); UnitOfWork.Current.Flush(); UnitOfWork.CurrentSession.Evict(credit); //get saved credit NHibernate.Criterion.Order order = new NHibernate.Criterion.Order("Name", true); Credit creditDb = Repository<Credit>.FindFirst(order); Assert.AreEqual(creditDb, credit); }
public ICollection <TEntity> FindAll(int firstResult, int numberOfResults, NHibernate.Criterion.Order selectionOrder, params NHibernate.Criterion.ICriterion[] criteria) { throw new NotImplementedException(); }
public ICollection <TEntity> FindAll(NHibernate.Criterion.Order order, params NHibernate.Criterion.ICriterion[] criteria) { throw new NotImplementedException(); }
/// <summary> /// Sets sort order /// </summary> /// <param name="o">Sort order</param> /// <returns>this</returns> public INHSolrQuery SetSort(Order o) { options.OrderBy = new[] { ConvertOrder(o) }; return(this); }
private SortOrder ConvertOrder(Order o) { return(SortOrder.Parse(o.ToString())); }
public override IList <IDataObject> Get(string objectType, DataFilter filter, int pageSize, int startIndex) { DataFilter newFilter = Utility.CloneDataContractObject <DataFilter>(filter); AccessLevel accessLevel = Authorize(objectType, ref newFilter); if (accessLevel < AccessLevel.Read) { throw new UnauthorizedAccessException(String.Format(UNAUTHORIZED_ERROR, _settings["scope"])); } ISession session = NHibernateSessionManager.Instance.GetSession(_settings["AppDataPath"], _settings["Scope"]); try { if (_dbDictionary.IdentityConfiguration != null) { IdentityProperties identityProperties = _dbDictionary.IdentityConfiguration[objectType]; if (identityProperties.UseIdentityFilter) { newFilter = FilterByIdentity(objectType, newFilter, identityProperties); } } DataObject objectDefinition = _dbDictionary.dataObjects.Find(x => x.objectName.ToUpper() == objectType.ToUpper()); if (objectDefinition == null) { throw new Exception("Object type [" + objectType + "] not found."); } string ns = String.IsNullOrEmpty(objectDefinition.objectNamespace) ? String.Empty : (objectDefinition.objectNamespace + "."); Type type = Type.GetType(ns + objectType + ", " + _settings["ExecutingAssemblyName"]); // make an exception for tests if (type == null) { type = Type.GetType(ns + objectType + ", NUnit.Tests"); } ICriteria criteria = NHibernateUtility.CreateCriteria(session, type, objectDefinition, newFilter); if (pageSize == 0 && startIndex == 0) { List <IDataObject> dataObjects = new List <IDataObject>(); long totalCount = GetCount(objectType, filter); int internalPageSize = (_settings["InternalPageSize"] != null) ? int.Parse(_settings["InternalPageSize"]) : 1000; int numOfRows = 0; while (numOfRows < totalCount) { if (filter != null && filter.OrderExpressions != null && filter.OrderExpressions.Count > 0) { criteria.SetFirstResult(numOfRows).SetMaxResults(internalPageSize); } else { NHibernate.Criterion.Order order = new NHibernate.Criterion.Order(objectDefinition.keyProperties.First().keyPropertyName, true); criteria.AddOrder(order).SetFirstResult(numOfRows).SetMaxResults(internalPageSize); } dataObjects.AddRange(criteria.List <IDataObject>()); numOfRows += internalPageSize; } return(dataObjects); } else { if (filter != null && filter.OrderExpressions != null && filter.OrderExpressions.Count > 0) { criteria.SetFirstResult(startIndex).SetMaxResults(pageSize); } else { NHibernate.Criterion.Order order = new NHibernate.Criterion.Order(objectDefinition.keyProperties.First().keyPropertyName, true); criteria.AddOrder(order).SetFirstResult(startIndex).SetMaxResults(pageSize); } IList <IDataObject> dataObjects = criteria.List <IDataObject>(); return(dataObjects); } } catch (Exception ex) { _logger.Error("Error in Get: " + ex); throw new Exception(string.Format("Error while getting a list of data objects of type [{0}]. {1}", objectType, ex)); } finally { CloseSession(session); } }