예제 #1
0
        public IEntityObject GetModel(IEntityObject model, EntitySelectQuery selectQuery)
        {
            switch (model.Type)
            {
            case ObjectType.User:
                return(EntityWrapper.GetModel(model as User, selectQuery));

            case ObjectType.Client:
                return(EntityWrapper.GetModel(model as Client, selectQuery));

            case ObjectType.Machine:
                return(EntityWrapper.GetModel(model as Machine, selectQuery));

            case ObjectType.MachineType:
                return(EntityWrapper.GetModel(model as MachineType, selectQuery));

            case ObjectType.Order:
                return(EntityWrapper.GetModel(model as Order, selectQuery));

            case ObjectType.RepairType:
                return(EntityWrapper.GetModel(model as RepairType, selectQuery));

            default:
                return(null);
            }
        }
 public static TObject GetModel <TObject>(EntitySelectQuery selectQuery)
     where TObject : class, IEntityObject, IEntityObject <TObject>, new()
 {
     using (ChannelFactory <IMachineRepairService> alphaserverFactory = GetChanel())
     {
         IMachineRepairService alphaserverProxy = alphaserverFactory.CreateChannel();
         return(alphaserverProxy.GetModel(new TObject(), selectQuery) as TObject);
     }
 }
        private static Expression <Func <T, bool> > GetExpression <T>(EntitySelectQuery expressionBuilder, ParameterExpression param) where T : class, IEntityObject, IEntityObject <T>
        {
            var exp = GetExpression <T>(expressionBuilder._whereExpression, param);

            if (exp == null)
            {
                return(null);
            }
            return(Expression.Lambda <Func <T, bool> >(exp, param));
        }
 public static EList <TObject> GetModels <TObject>(EntitySelectQuery selectQuery)
     where TObject : class, IEntityObject, IEntityObject <TObject>, new()
 {
     using (ChannelFactory <IMachineRepairService> alphaserverFactory = GetChanel())
     {
         IMachineRepairService alphaserverProxy = alphaserverFactory.CreateChannel();
         var obj = new TObject();
         return(alphaserverProxy.GetModelsWithQuery(obj, selectQuery) as EList <TObject>);
     }
 }
        public static IQueryable <TObject> GetQueryable <TObject>(TObject workingObject, EntitySelectQuery selectQuery,
                                                                  DbContext context)
            where TObject : class, IEntityObject, IEntityObject <TObject>
        {
            IQueryable <TObject> dbQuery = context.Set <TObject>();

            if (workingObject.HasAssociation)
            {
                dbQuery = workingObject.GetAssociaton(context.Set <TObject>());
            }
            var param = Expression.Parameter(typeof(TObject), "t");
            var exp   = GetExpression <TObject>(selectQuery, param);

            if (exp != null)
            {
                dbQuery = dbQuery.Where(exp);
            }

            if (selectQuery.OrderDirection != OrderByDirection.None)
            {
                MemberExpression member;
                if (selectQuery.OrderBy.Contains("."))
                {
                    int pos = selectQuery.OrderBy.IndexOf(".");
                    member = Expression.Property(param, selectQuery.OrderBy.Substring(0, pos));
                    member = Expression.Property(member, selectQuery.OrderBy.Substring(pos + 1));
                }
                else
                {
                    member = Expression.Property(param, selectQuery.OrderBy);
                }
                //var pi = typeof(TObject).GetProperty(selectQuery.OrderBy);
                switch (selectQuery.OrderDirection)
                {
                case OrderByDirection.Asc:
                    dbQuery = dbQuery.OrderBy(param, member);
                    break;

                case OrderByDirection.Desc:
                    dbQuery = dbQuery.OrderByDescending(param, member);
                    break;
                }
            }
            if (selectQuery.From >= 0 && selectQuery.Count > 0)
            {
                return(dbQuery.Skip(selectQuery.From).Take(selectQuery.Count));
            }
            if (selectQuery.Top > 0)
            {
                return(dbQuery.Take(selectQuery.Top));
            }
            return(dbQuery);
        }