示例#1
0
        private IQueryable <TEntity> PreQuery(ILinqProvider linqProvider, TParam qrit)
        {
            var res = linqProvider.Query <TEntity>()
                      .Apply(Spec, qrit);

            return(res);
        }
示例#2
0
        public void InMemoryStoreTest()
        {
            using (var store = new InMemoryStore())
            {
                store.Register <Author>();
                IUnitOfWork uow         = store as IUnitOfWork;
                const int   authorCount = 100;
                Parallel.For(0, authorCount, i =>
                {
                    uow.Add(new Author(i, $"Author {i}"));
                });
                ILinqProvider linq = store as ILinqProvider;

                Assert.AreEqual(authorCount, linq.Query <Author>().Count());
                int id = 3;
                Assert.AreEqual(1, linq.Query <Author>().Where(a => a.Id == id).Count());
                Assert.AreEqual(id, linq.Query <Author>().Where(a => a.Id == id).FirstOrDefault().Id);
                Assert.AreEqual($"Author {id}", linq.Query <Author>().Where(a => a.Id == id).FirstOrDefault().Name);

                var author = new Author(id, $"Author#{id}");
                uow.Update(author);
                uow.Commit();

                Assert.AreEqual(1, linq.Query <Author>().Where(a => a.Id == id).Count());
                Assert.AreEqual(author.Id, linq.Query <Author>().Where(a => a.Id == id).FirstOrDefault().Id);
                Assert.AreEqual(author.Name, linq.Query <Author>().Where(a => a.Id == id).FirstOrDefault().Name);

                Parallel.For(0, 100, i =>
                {
                    var updAuthor = new Author(id, $"Author#{i}");
                    uow.Update(updAuthor);
                });
            }
        }
示例#3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AddBookingFilterValidator" /> class.
        /// </summary>
        public AddBookingFilterValidator(ILinqProvider linqProvider)
        {
            RuleFor(x => x.StartDate)
            .LessThanOrEqualTo(x => x.EndDate)
            .WithMessage("'startdDate' cannot be greater that 'endDate'");


            RuleFor(x => x.EndDate)
            .GreaterThanOrEqualTo(x => x.StartDate)
            .WithMessage("'endDate' cannot be less that 'startDate'");

            RuleFor(x => x)
            .Must(y =>
            {
                var bookingsDates = linqProvider.Query <BookingEntity>()
                                    .Where(x => x.RoomId == y.RoomId)
                                    .Select(x => new { x.StartDate, x.EndDate })
                                    .ToList();

                foreach (var booking in bookingsDates)
                {
                    if (y.StartDate < booking.EndDate.AddDays(1) && y.EndDate > booking.StartDate)
                    {
                        return(false);
                    }
                }

                return(true);
            })
            .WithMessage("There is overlapping with existing bookings, please re-check yours request dates");
        }
示例#4
0
 public GetQuery([NotNull] ILinqProvider linqProvider, [NotNull] IMapper mapper)
 {
     if (linqProvider == null) throw new ArgumentNullException(nameof(linqProvider));
     if (mapper == null) throw new ArgumentNullException(nameof(mapper));
     _linqProvider = linqProvider;
     _mapper = mapper;
 }
示例#5
0
        public async Task EFQueryAsyncTest()
        {
            int cntBook = 0;

            using (ILinqProvider linq = serviceLocator.GetInstance <ILinqProviderFactory>().Create())
            {
                var books = linq.Query <Book>().ToList();
                Assert.IsNotNull(books);
                cntBook = books.Count();
                Assert.IsTrue(cntBook > 0);
            }

            var allBooks = await handlerLocator
                           .For <IEnumerable <BookDto> >()
                           .AskAsync(new BookOrAuthorQriteria());

            var idQrit = new IdQriteria {
                Id = 2
            };
            var book = await handlerLocator
                       .For <BookDto>()
                       .AskAsync(idQrit);

            Assert.IsNotNull(allBooks);
            Assert.IsInstanceOfType(allBooks, typeof(IEnumerable <BookDto>));
            Assert.IsTrue(allBooks.Count() > 0);
            Assert.IsTrue(allBooks.Count() == cntBook);

            Assert.IsNotNull(book);
            Assert.IsInstanceOfType(book, typeof(BookDto));
            Assert.AreEqual(idQrit.Id, book.Id);
        }
示例#6
0
 protected LinqQueryBase([NotNull] ILinqProvider lingProvider)
 {
     if (lingProvider == null)
     {
         throw new ArgumentNullException(nameof(lingProvider));
     }
     LingProvider = lingProvider;
 }
示例#7
0
        public RelationRepository([NotNull] ILinqProvider linqProvider)
        {
            if (linqProvider == null)
            {
                throw new ArgumentNullException(nameof(linqProvider));
            }

            _linqProvider = linqProvider;
        }
示例#8
0
        ///<summary>
        ///</summary>
        ///<param name="sessionProvider"></param>
        ///<param name="linqProvider"></param>
        /// <exception cref="ArgumentNullException"><c>sessionProvider</c> is null.</exception>
        protected BaseRepository(ISessionProvider sessionProvider, ILinqProvider linqProvider)
        {
            if (sessionProvider == null)
            {
                throw new ArgumentNullException("sessionProvider");
            }

            this.sessionProvider = sessionProvider;
            this.linqProvider    = linqProvider;
        }
示例#9
0
        public override Result Request(ILinqProvider linq, CreateBookCmd qrit)
        {
            var query = linq.Query <Book>()
                        .Where(b => b.Name == qrit.Name)
                        .AsNoTracking();

            if (!query.Any())
            {
                return(Result.Ok());
            }

            return(new Failure(Messages.BookNameUnique, query.ToList()));
        }
示例#10
0
        public IQueryable Query(ILinqProvider linqProvider, IPageQriteria <TParam> qrit)
        {
            var filterExpr = qrit.Subject != null ?
                             ConventionBuilder <TEntity> .FilterExpression(qrit.Subject)
                                : (x) => true;

            var query = linqProvider
                        .Query <TEntity>()
                        .Where(filterExpr)
                        .OrderByConventions(qrit);

            return(query);
        }
示例#11
0
        public ExpertRepository(IRepository <Expert> repository, ILinqProvider linqProvider)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }
            if (linqProvider == null)
            {
                throw new ArgumentNullException(nameof(linqProvider));
            }

            _repository   = repository;
            _linqProvider = linqProvider;
        }
        public ProjectionQuery([NotNull] ILinqProvider linqProvider, [NotNull] IProjector projector)
        {
            if (linqProvider == null)
            {
                throw new ArgumentNullException(nameof(linqProvider));
            }
            if (projector == null)
            {
                throw new ArgumentNullException(nameof(projector));
            }

            LinqProvider = linqProvider;
            Projector    = projector;
        }
示例#13
0
        protected TypeRepository([NotNull] IRepository <T> repository, [NotNull] ILinqProvider linqProvider)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }
            if (linqProvider == null)
            {
                throw new ArgumentNullException(nameof(linqProvider));
            }

            _repository  = repository;
            LinqProvider = linqProvider;
        }
示例#14
0
        public NodeRepository([NotNull] IRepository <Node> repository, [NotNull] ILinqProvider linqProvider)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }
            if (linqProvider == null)
            {
                throw new ArgumentNullException(nameof(linqProvider));
            }

            _repository   = repository;
            _linqProvider = linqProvider;
        }
        public SessionOfExpertsRepository(
            [NotNull] IRepository <SessionOfExperts> repository,
            [NotNull] ILinqProvider linqProvider)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }
            if (linqProvider == null)
            {
                throw new ArgumentNullException(nameof(linqProvider));
            }

            _repository   = repository;
            _linqProvider = linqProvider;
        }
        public GetCommandByNameQuery(ILinqProvider linqProvider, string name) : base(linqProvider)
        {
            if (name == "Арсенал")
            {
                name = "Арсенал Тула";
            }
            if (name.ToLower().Trim() == "советов" || name.ToLower().Trim() == "крылья")
            {
                name = "Крылья Советов";
            }
            if (name.ToLower().Trim() == "хабаровск" || name.ToLower().Trim() == "ска")
            {
                name = "СКА Хабаровск";
            }

            this.name = name;
        }
示例#17
0
        public override IEnumerable <Object> Request(ILinqProvider linqProvider, BookInGenreQrit qrit)
        {
            // некая сложная выборка, для которой недостаточно Expression
            var q1 = from b in linqProvider.Query <Book>()
                     where b.BookGenres.Any(bg => bg.Genre.Name.StartsWith(qrit.Name))
                     select new { b.Id, BookName = b.Name, b.BookGenres };

            var d1 = q1.ToArray();

            var q2 = from b in d1
                     select new
            {
                b.BookName,
                Genre = b.BookGenres.AsQueryable().Aggregate("Genre(s): ", (g, next) => g + ", " + next.Genre.Name)
            };

            return(q2);
        }
示例#18
0
        public GetByIdQuery(ILinqProvider linqProvider, IProjector projector, [NotNull] IMapper mapper)
        {
            if (linqProvider == null)
            {
                throw new ArgumentNullException(nameof(linqProvider));
            }
            if (projector == null)
            {
                throw new ArgumentNullException(nameof(projector));
            }
            if (mapper == null)
            {
                throw new ArgumentNullException(nameof(mapper));
            }

            LinqProvider = linqProvider;
            Projector    = projector;
            Mapper       = mapper;
        }
示例#19
0
 public SubscriptionWithProductsQuery(ILinqProvider linqProvider)
 {
     _linqProvider = linqProvider;
 }
 public FindStaffListViewModelForPageQuery(ILinqProvider linq) : base(linq)
 {
 }
 public QueryStub(ILinqProvider linq)
     : base(linq)
 {
 }
 public QueryFactoryStub(ILinqProvider linqProvider)
 {
     _linqProvider = linqProvider;
 }
示例#23
0
 public GetQuery(ILinqProvider linqProvider, IMapper mapper)
 {
     this.linqProvider = linqProvider;
     this.mapper       = mapper;
 }
示例#24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RoomProvider" /> class.
 /// </summary>
 public RoomProvider(ILinqProvider linqProvider)
 {
     _linqProvider = linqProvider;
 }
示例#25
0
 public FindByLoginQuery(ILinqProvider linqProvider) : base(linqProvider)
 {
 }
 public GetForecastsByNumberQuery(ILinqProvider linqProvider, int number) : base(linqProvider)
 {
     this.number = number;
 }
 public LastSubscriptionDateForSubscriptionRepositoryQuery(ILinqProvider linqProvider)
 {
     _linqProvider = linqProvider;
 }
示例#28
0
 public PagedQuery(ILinqProvider linqProvider, IProjector projector)
     : base(linqProvider, projector)
 {
 }
 public DeliveryIntervalWithTemplateByIdQuery(ILinqProvider linqProvider)
 {
     _linqProvider = linqProvider;
 }
示例#30
0
 public GetNotionsTypesQuery([NotNull] ILinqProvider lingProvider)
     : base(lingProvider)
 {
 }