/// <summary> /// Add a temporary Entity Type for testing. /// </summary> /// <param name="name">Name of the Entity Type</param> /// <param name="entityType">The Entity Type definition.</param> public void AddTemp(string name, DSEntityType entityType) { if (tempItems == null) { tempItems = new Dictionary <string, DSEntityType>(); } tempItems[name] = entityType; }
/// <summary> /// Build out the supplied search. /// </summary> /// <param name="search">Search definition to build.</param> public void BuildSearch(DSSearch search) { _entity = _entityTypeRepository.Get(search.Type); if (_entity == null) { throw new SearchBuilderException(string.Format("Entity type '{0}' not found.", search.Type)); } _searchBuilder.AddTable(_entity.StorageName); _searchBuilder.Distinct = search.Distinct; foreach (var item in search.Select) { ParseSelect(item); } if (search.ShouldSerializeWhere()) { BuildFilter(search.Where); } if (search.ShouldSerializeOrder()) { foreach (var item in search.Order) { _searchBuilder.AddSort(GetQualifiedName(item.Name), item.Desc); } } // Have to add in default sort by the Key to ensure we will be paging consistently _searchBuilder.AddSort(GetQualifiedName(_entity.KeyName), false); // Apply paging _searchBuilder.AddPaging(search.Page, search.PageSize); _searchBuilder.Complete(); }