예제 #1
0
 /// <summary>
 /// SQL like query to find and return a list of objects based on a FetchSpecification.</summary>
 /// <remarks> A query Fetch Specification is used for creating SQL like queries, in a more OO fashion.</remarks>
 /// <param name="fetchSpecification">FetchSpecification.</param>
 /// <returns> ObjectList&lt;Inventory&gt; </returns>
 public ObjectList<Inventory> Find(FetchSpecification fetchSpecification)
 {
     ObjectList<Inventory> c = new ObjectList<Inventory>();
     foreach(Inventory eo in base.Find(fetchSpecification))
     c.Add(eo);
     return c;
 }
예제 #2
0
 /// <summary>
 /// SQL like query to find and return a list of objects based on a FetchSpecification.</summary>
 /// <remarks> A query Fetch Specification is used for creating SQL like queries, in a more OO fashion.</remarks>
 /// <param name="fetchSpecification">FetchSpecification.</param>
 /// <returns> ObjectList&lt;Status&gt; </returns>
 public ObjectList<Status> Find(FetchSpecification fetchSpecification)
 {
     ObjectList<Status> c = new ObjectList<Status>();
     foreach(Status eo in base.Find(fetchSpecification))
     c.Add(eo);
     return c;
 }
예제 #3
0
 /// <summary>
 /// SQL like query to find and return a list of objects based on a FetchSpecification.</summary>
 /// <remarks> A query Fetch Specification is used for creating SQL like queries, in a more OO fashion.</remarks>
 /// <param name="fetchSpecification">FetchSpecification.</param>
 /// <returns> ObjectList&lt;Customer&gt; </returns>
 public ObjectList<Customer> Find(FetchSpecification fetchSpecification)
 {
     ObjectList<Customer> c = new ObjectList<Customer>();
     foreach(Customer eo in base.Find(fetchSpecification))
     c.Add(eo);
     return c;
 }
예제 #4
0
 /// <summary>
 /// SQL like query to find and return a list of objects based on a FetchSpecification.</summary>
 /// <remarks> A query Fetch Specification is used for creating SQL like queries, in a more OO fashion.</remarks>
 /// <param name="fetchSpecification">FetchSpecification.</param>
 /// <returns> ObjectList&lt;Product&gt; </returns>
 public ObjectList<Product> Find(FetchSpecification fetchSpecification)
 {
     ObjectList<Product> c = new ObjectList<Product>();
     foreach(Product eo in base.Find(fetchSpecification))
     c.Add(eo);
     return c;
 }
        public static IQueryable <TEntity> Query <TEntity>(this IQueryable <TEntity> source, OrderSpecification <TEntity> orderSpecification, Specification <TEntity> whereSpecification, FetchSpecification <TEntity> fetchSpecification, PaginatedSpecification paginatedSpecification) where TEntity : class, IEntity
        {
            if (whereSpecification.With(r => r.IsSatisfiedBy()) != null)
            {
                source = source.Where(whereSpecification.IsSatisfiedBy());
            }

            if (orderSpecification != null)
            {
                var order = new AdHocOrderSpecification <TEntity>();
                orderSpecification.SortedBy()(order);
                source = order.applies.Aggregate(source, (current, apply) => apply(current));
            }

            if (paginatedSpecification != null)
            {
                source = source.Page(paginatedSpecification.CurrentPage, paginatedSpecification.PageSize);
            }

            if (fetchSpecification != null)
            {
                AdHocFetchSpecificationBase <TEntity> fetch = null;
                fetch = new AdHocFetchNhibernateSpecification <TEntity>();
                //else
                //if (fullName.EqualsWithInvariant("System.Data.Entity.Internal.Linq.DbQueryProvider"))
                //    fetch = new AdHocFetchEFSpecification<TEntity>();
                //else if (fullName.Contains("Raven.Client.Linq.RavenQueryProvider"))
                //    fetch = new AdHocFetchRavenDbSpecification<TEntity>();

                //if (fetch != null)
                //{
                fetchSpecification.FetchedBy()(fetch);
                source = fetch.applies.Aggregate(source, (current, apply) => apply(current));
                //}
            }

            return(source);
        }
예제 #6
0
 /// <summary>
 /// SQL like query to find and return a list of objects based on a FetchSpecification.</summary>
 /// <remarks> A query Fetch Specification is used for creating SQL like queries, in a more OO fashion.</remarks>
 /// <param name="fetchSpecification">FetchSpecification.</param>
 /// <returns> ObjectList&lt;OrderItem&gt; </returns>
 public ObjectList<OrderItem> Find(FetchSpecification fetchSpecification)
 {
     ObjectList<OrderItem> c = new ObjectList<OrderItem>();
     foreach(OrderItem eo in base.Find(fetchSpecification))
     c.Add(eo);
     return c;
 }
        public static IncPaginatedResult <TEntity> Paginated <TEntity>(this IQueryable <TEntity> source, OrderSpecification <TEntity> orderSpecification, Specification <TEntity> whereSpecification, FetchSpecification <TEntity> fetchSpecification, PaginatedSpecification paginatedSpecification) where TEntity : class, IEntity
        {
            int totalCount     = source.Query(null, whereSpecification, null, null).Count();
            var paginatedItems = source.Query(orderSpecification, whereSpecification, fetchSpecification, paginatedSpecification).ToList();

            return(new IncPaginatedResult <TEntity>(paginatedItems, totalCount));
        }
예제 #8
0
        public MockMessage <TMessage, TResult> StubNotEmptyQuery <TEntity>(OrderSpecification <TEntity> orderSpecification = null, Specification <TEntity> whereSpecification = null, FetchSpecification <TEntity> fetchSpecification = null, PaginatedSpecification paginatedSpecification = null, int countEntity = 1) where TEntity : class, IEntity, new()
        {
            var entities = Pleasure.ToList <TEntity>();

            for (int i = 0; i < countEntity; i++)
            {
                entities.Add(Pleasure.Generator.Invent <TEntity>());
            }

            return(StubQuery(orderSpecification, whereSpecification, fetchSpecification, paginatedSpecification, entities.ToArray()));
        }
예제 #9
0
 public MockMessage <TMessage, TResult> StubPaginated <TEntity>(PaginatedSpecification paginatedSpecification, OrderSpecification <TEntity> orderSpecification = null, Specification <TEntity> whereSpecification = null, FetchSpecification <TEntity> fetchSpecification = null, IncPaginatedResult <TEntity> result = null) where TEntity : class, IEntity
 {
     return(Stub(message => message.repository.StubPaginated(paginatedSpecification, orderSpecification, whereSpecification, fetchSpecification, result)));
 }
예제 #10
0
 public MockMessage <TMessage, TResult> StubQuery <TEntity>(OrderSpecification <TEntity> orderSpecification = null, Specification <TEntity> whereSpecification = null, FetchSpecification <TEntity> fetchSpecification = null, PaginatedSpecification paginatedSpecification = null, params TEntity[] entities) where TEntity : class, IEntity
 {
     return(Stub(message => message.repository.StubQuery(orderSpecification, whereSpecification, fetchSpecification, paginatedSpecification, entities)));
 }
 public static FetchSpecification <T> And <T>(this FetchSpecification <T> first, FetchSpecification <T> second)
 {
     return(new AndFetchSpecification <T>(first, second));
 }