Пример #1
0
        public IEnumerable <Frame> Search(string projectName, ICriterion criterion)
        {
            var converter = new FrameDomainEntityConverter();

            using (var context = ContextFactory.GetContext(projectName))
            {
                var query     = context.FrameEntities.AsExpandable();
                var visitor   = new FrameCriterionVisitor();
                var exp       = (Expression <Func <FrameEntity, bool> >)criterion.Accept(visitor);
                var frames    = query.Where(exp).ToList();
                var converted = frames.Select(x => converter.ToDomain(x, context)).ToList();
                return(converted);
            }
        }
Пример #2
0
 /// <summary>
 ///     Gets the frame.
 /// </summary>
 /// <param name="projectName">Name of the project.</param>
 /// <param name="position">The position.</param>
 /// <param name="threadId">The thread identifier.</param>
 /// <returns>Frame.</returns>
 /// <exception cref="IndexOutOfRangeException"></exception>
 public Frame GetFrame(string projectName, Position position, int threadId)
 {
     using (var context = ContextFactory.GetContext(projectName))
     {
         var first = context.FrameEntities.FirstOrDefault(x =>
                                                          x.PosHi == position.High && x.PosLo == position.Low && x.ThreadId == threadId);
         if (first == null)
         {
             throw new IndexOutOfRangeException(
                       $"Count not find a frame with position: {position} and threadid: {threadId}");
         }
         var converter = new FrameDomainEntityConverter();
         return(converter.ToDomain(first, context));
     }
 }