예제 #1
0
        private bool AssertContinueSelecting(AssistantEntity entity, AssistantQueryParameter parameter, string[] fields, out AssistantPrepareEventArgs eventContext)
        {
            eventContext = null;
            if (PreSelectItem != null)
            {
                eventContext        = new AssistantPrepareEventArgs();
                eventContext.Entity = entity;
                eventContext.Fields = fields;
                PreSelectItem(this, eventContext);

                return(!eventContext.Canceled);
            }
            return(true);
        }
예제 #2
0
        public List <T> SelectList <T>(IConnection conn, string tablename, Criteria condition, Order[] orders, int offset, int count, object[] fields)
        {
            AssistantPrepareEventArgs args;
            AssistantEntity           typedEntity = new AssistantEntity(typeof(T));

            typedEntity.TableName = tablename;
            typedEntity.Criteria  = condition;

            AssistantQueryParameter parameter = new AssistantQueryParameter();

            parameter.Orders = orders;
            parameter.Offset = offset;
            parameter.Count  = count;

            bool     isListField = (null != fields) && (fields.Length > 0) && (fields[0] is ListField);
            List <T> result      = new List <T>();

            string[] actualFields = null;
            if (isListField)
            {
                actualFields = new string[fields.Length];
                for (int i = 0; i < actualFields.Length; i++)
                {
                    actualFields[i] = (fields[i] as ListField).FieldName;
                }
            }
            if (AssertContinueSelecting(typedEntity, parameter, (isListField ? actualFields : (fields as string[])), out args))
            {
                ObjectManager oa = string.IsNullOrEmpty(tablename) ? _d1.GetObjectManager(typeof(T)) : _d1.GetObjectManager(tablename);
                if (isListField)
                {
                    result = oa.MyList <T>(conn, condition, orders, offset, count, (fields as ListField[]));
                }
                else
                {
                    result = oa.MyList <T>(conn, condition, orders, offset, count, (fields as string[]));
                }
            }
            else if (null != args.ContextData &&
                     !ReferenceEquals(parameter, args.ContextData))
            {
                result = (args.ContextData as List <T>) ?? new List <T>();
            }

            return(result);
        }