Exemple #1
0
        private static OQLCompareFunc <BCustomer, SalesOrder> GetCondtion3()
        {
            OQLCompareFunc <BCustomer, SalesOrder> cmpFun = (cmp, C, S) =>
            {
                OQLCompare cmpResult = null;
                cmpResult = cmp.Comparer(S.iBillID, OQLCompare.CompareType.Equal, 1);

                if (!string.IsNullOrEmpty(S.iOrderTypeID))
                {
                    cmpResult = cmpResult & cmp.Comparer(S.iOrderTypeID, OQLCompare.CompareType.Equal, S.iOrderTypeID);
                }
                else
                {
                    cmp.NewCompare();
                }

                int iCityID = 0;
                //由于调用了关联实体类的 S.iOrderTypeID 用于条件比较【上面的IsNullOrEmpty 调用】,并且C.iCityID==iCityID==0 ,
                //所以下面需要调用 cmp.NewCompare(),以清除OQL字段堆栈中的数据对Comparer 方法的影响
                //感谢网友 红枫星空 发现此问题
                //如果 C.iCityID != iCityID ,尽管上面调用了关联实体类的属性,但 Comparer 方法不受影响,也不需要调用 NewCompare 方法
                cmpResult = cmpResult & cmp.Comparer(C.iCityID, OQLCompare.CompareType.Equal, iCityID);
                return(cmpResult);
            };

            return(cmpFun);
        }
Exemple #2
0
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="nodeCodes"></param>
        public void DeleteBaseConfigs(string nodeCodes)
        {
            try
            {
                //开始事物
                db_dataReportWJW.BeginTransaction();

                FgSys_BaseConfig entity        = new FgSys_BaseConfig();
                string[]         nodeCodeArray = nodeCodes.Split(',');

                for (int i = 0; i < nodeCodeArray.Length; i++)
                {
                    OQLCompareFunc <FgSys_BaseConfig> cmpFun = (cmp, u) =>
                    {
                        OQLCompare cmpResult = null;
                        cmpResult = cmpResult & cmp.Comparer(entity.NodeCode, OQLCompare.CompareType.Equal, nodeCodeArray[i]);
                        return(cmpResult);
                    };
                    OQL deleteQ = OQL.From(entity).Delete().Where(cmpFun).END;
                    EntityQuery <FgSys_BaseConfig> .ExecuteOql(deleteQ, db_dataReportWJW);
                }

                //提交事物
                db_dataReportWJW.Commit();
            }
            catch (Exception err)
            {
                //回滚事物
                db_dataReportWJW.Rollback();
                throw err;
            }
        }
Exemple #3
0
        void TestIfCondition()
        {
            Users user = new Users()
            {
                ID = 1, NickName = "abc", UserName = "******", Password = "******"
            };
            OQLCompareFunc cmpFun = cmp =>
            {
                OQLCompare cmpResult = null;
                if (user.NickName != "")
                {
                    cmpResult = cmp.Property(user.AddTime) > new DateTime(2013, 2, 1);
                }
                if (user.ID > 0)
                {
                    cmpResult = cmpResult & cmp.Property(user.UserName) == "ABC" & cmp.Comparer(user.Password, "=", "111");
                }
                return(cmpResult);
            };

            OQL q6 = OQL.From(user).Select().Where(cmpFun).END;

            Console.WriteLine("OQL by 动态构建 OQLCompare Test(Lambda方式):\r\n{0}", q6);
            Console.WriteLine(q6.PrintParameterInfo());
        }
Exemple #4
0
        void Test2()
        {
            Users     user  = new Users();
            UserRoles roles = new UserRoles()
            {
                RoleName = "role1"
            };

            OQL q2 = new OQL(user);

            q2.InnerJoin(roles).On(user.RoleID, roles.ID);

            OQLCompare cmp       = new OQLCompare(q2);
            OQLCompare cmpResult =
                (
                    cmp.Property(user.UserName) == "ABC" &
                    cmp.Comparer(user.Password, "=", "111") &
                    cmp.EqualValue(roles.RoleName)
                )
                |
                (
                    (cmp.Comparer(user.UserName, "=", "CDE") &
                     cmp.Property(user.Password) == "222" &
                     cmp.Comparer(roles.RoleName, "like", "%Role2")
                    )
                    |
                    (cmp.Property(user.LastLoginTime) > DateTime.Now.AddDays(-1))
                )
            ;

            q2.Select().Where(cmpResult);
            Console.WriteLine("OQL by OQLCompare Test:\r\n{0}", q2);
            Console.WriteLine(q2.PrintParameterInfo());
        }
Exemple #5
0
        /// <summary>
        /// 获取列表数据
        /// </summary>
        /// <param name="cp">where条件,没有可传人null</param>
        /// <param name="orders">排序字段对象</param>
        /// <param name="pageSize">每页显示记录数</param>
        /// <param name="pageIndex">当前页</param>
        /// <returns></returns>
        public static List <T> GetList <T>(OQLCompare cp, OQLOrder orders, int pageSize, int pageIndex) where T : EntityBase, ILongID, new()
        {
            T   m = new T();
            OQL q = new OQL(m);

            if ((object)cp != null)
            {
                if ((object)orders != null)
                {
                    q.Select().Where(cp).OrderBy(orders);
                }
                else
                {
                    q.Select().Where(cp);
                }
            }
            else
            {
                if ((object)orders != null)
                {
                    q.Select().OrderBy(orders);
                }
                else
                {
                    q.Select();
                }
            }
            q.PageWithAllRecordCount = GetRecordCounts <T>(cp);
            if (pageSize > 0 && pageIndex > 0 && q.PageWithAllRecordCount > 0)
            {
                q.Limit(pageSize, pageIndex);
            }

            return(EntityQuery <T> .QueryList(q));
        }
Exemple #6
0
        public static void 简单查询()
        {
            List <SODUser> result = null;

            //方式 params
            SODUser user = new SODUser()
            {
                LogName = "zhang san"
            };
            OQL q = OQL.From(user)
                    .Select()
                    .Where(user.LogName)
                    .END;

            result = EntityQuery <SODUser> .QueryList(q);

            //方式 OQLCompare
            SODUser    user2      = new SODUser();
            OQL        q2         = OQL.From(user2);
            OQLCompare oqlCompare = new OQLCompare(q2);

            oqlCompare.Comparer(user2.ID, ">", 0);

            //OQLCompare oqlCompare2 = new OQLCompare(user2).Comparer(user2.ID, OQLCompare.CompareType.Greater, 0);
            //q2 = q2.Select().Where(oqlCompare2).END;

            q2     = q2.Select().Where(oqlCompare).END;
            result = EntityQuery <SODUser> .QueryList(q2);
        }
Exemple #7
0
        public static void 连表查询in()
        {
            SODUser        user       = new SODUser();
            OQL            q          = new OQL(user);
            OQLCompareFunc resultFunc = cmp =>
            {
                OQLCompare resultCmp = cmp.Comparer(user.ID, ">", 2);
                resultCmp = resultCmp & cmp.Comparer(user.LogName, "like", "%zhang%");
                return(resultCmp);
            };

            q.Select(user.ID).Where(resultFunc);


            SODUserRemark  userRemark  = new SODUserRemark();
            OQL            r           = new OQL(userRemark);
            OQLCompareFunc resultFunc2 = cmp =>
            {
                OQLCompare resultCmp = cmp.Comparer(userRemark.UserId, "IN", q);

                return(resultCmp);
            };

            r.Select().Where(resultFunc2).OrderBy(userRemark.ID, "desc");

            var outlist = EntityQuery <SODUserRemark> .QueryList(r);
        }
Exemple #8
0
        void TestIfCondition()
        {
            Users user = new Users()
            {
                ID = 1, UserName = "******", Password = "******", NickName = ""
            };                                                                                          //NickName = "abc",
            OQLCompareFunc cmpFun = cmp =>
            {
                //5.2.2.0428 版本之前,仅支持被注释掉的写法,用一个独立的对象来接收条件比较结果,否则会出错.
                //           之后的版本,按照现在的写法没问题,不过仍然建议使用原来的写法.
                OQLCompare cmpResult = null;
                if (user.NickName != "")
                {
                    //cmpResult = cmp.Property(user.AddTime) > new DateTime(2013, 2, 1);
                    cmp = cmp.Property(user.AddTime) > new DateTime(2013, 2, 1);
                }
                if (user.ID > 0)
                {
                    //cmpResult = cmpResult & cmp.Property(user.UserName) == "ABC" & cmp.Comparer(user.Password, "=", "111");
                    cmp = cmp & cmp.Property(user.UserName) == "ABC" & cmp.Comparer(user.Password, "=", "111");
                }
                //return cmpResult;
                cmpResult = cmp;
                return(cmpResult);
            };

            OQL q6 = OQL.From(user).Select().Where(cmpFun).END;

            Console.WriteLine("OQL by 动态构建 OQLCompare Test(Lambda方式):\r\n{0}", q6);
            Console.WriteLine(q6.PrintParameterInfo());
        }
Exemple #9
0
        /// <summary>
        /// 查询列表
        /// </summary>
        /// <param name="sqlWhere"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageCurrent"></param>
        /// <param name="listCount"></param>
        /// <param name="orderBy"></param>
        /// <returns></returns>
        public List <FgSys_BaseConfig> GetBaseConfigList(Dictionary <string, string> sqlWhere, int pageSize, int pageCurrent, ref int listCount, string[] orderBy)
        {
            try
            {
                FgSys_BaseConfig entity = new FgSys_BaseConfig();

                OQLCompareFunc <FgSys_BaseConfig> cmpFun = (cmp, u) =>
                {
                    OQLCompare cmpResult = null;
                    if (sqlWhere.Keys.Contains("NodeCode") && !string.IsNullOrEmpty(sqlWhere["NodeCode"]))
                    {
                        cmpResult = cmpResult & cmp.Comparer(entity.NodeCode, OQLCompare.CompareType.Like, "%" + sqlWhere["NodeCode"] + "%");
                    }
                    if (sqlWhere.Keys.Contains("NodeDomain") && !string.IsNullOrEmpty(sqlWhere["NodeDomain"]))
                    {
                        cmpResult = cmpResult & cmp.Comparer(entity.NodeDomain, OQLCompare.CompareType.Like, "%" + sqlWhere["NodeDomain"] + "%");
                    }

                    return(cmpResult);
                };

                OQL query;

                if (orderBy != null)
                {
                    query = OQL.From(entity).Select().Where(cmpFun).OrderBy(orderBy).END;
                }
                else
                {
                    query = OQL.From(entity).Select().Where(cmpFun).OrderBy(new string[1] {
                        "NodeCode asc"
                    }).END;
                }

                if (pageSize != 0 && pageCurrent != 0)
                {
                    //查询总条数
                    OQL qCount = OQL.From(entity).Select().Count(entity.NodeCode, "").Where(cmpFun).END;
                    listCount = Convert.ToInt32(EntityQuery <FgSys_BaseConfig> .QueryObject(qCount, db_dataReportWJW).NodeCode);//总条数

                    //构造分页
                    query.Limit(pageSize, pageCurrent);//分页大小,第几页
                    query.PageWithAllRecordCount = listCount;
                }

                //OQL query = OQL.From(entity).Select().END;

                List <FgSys_BaseConfig> list = EntityQuery <FgSys_BaseConfig> .QueryList(query, db_dataReportWJW);

                return(list);
            }
            catch (Exception err)
            {
                throw err;
            }
        }
Exemple #10
0
        OQLCompare CreateCondition(OQLCompare cmp, CustomModel custom)
        {
            OQLCompare cmpResult = null;

            if (custom.CustomName != "")
            {
                cmpResult = cmp.Comparer(custom.CustomName, OQLCompare.CompareType.Like, "%" + custom.CustomName + "%");
            }
            return(cmpResult);
        }
Exemple #11
0
        OQLCompare CreateCondition(OQLCompare cmp, ProductTypeModel ProductType)
        {
            OQLCompare cmpResult = null;

            if (ProductType.ProductTypeName != "")
            {
                cmpResult = cmp.Comparer(ProductType.ProductTypeName, OQLCompare.CompareType.Like, "%" + ProductType.ProductTypeName + "%");
            }
            return(cmpResult);
        }
Exemple #12
0
        void TestNotCondition()
        {
            Users user = new Users();
            OQL   q    = OQL.From(user)
                         .Select(user.ID, user.UserName, user.Password)
                         .Where <Users>((cmp, u) => OQLCompare.Not(
                                            cmp.Property(u.UserName) == "ABC" & cmp.Property(u.Password) == "123")
                                        )
                         .END;

            Console.WriteLine("OQL Test NOT Condition:\r\n{0}\r\n", q);
            Console.WriteLine(q.PrintParameterInfo());
        }
Exemple #13
0
        void TestOQL()
        {
            //假如GoodsBaseInfo 对象的实例info 是长生命周期的,那么应该使用下面的方式使用OQL和OQLCompare
            GoodsBaseInfo info = new GoodsBaseInfo();

            using (OQL q = new OQL(info))
            {
                OQLCompare cmp = new OQLCompare(info);
                q.Select(info.GoodsName).Where(cmp.Comparer(info.SerialNumber, "=", "123456"));
                string sql = q.ToString();
                cmp.Dispose();
            }

            DisplayMemory();
        }
Exemple #14
0
        OQLCompare CreateCondition(OQLCompare cmp, Users user)
        {
            OQLCompare cmpResult = null;

            if (user.NickName != "")
            {
                //cmpResult = cmp.Property(user.AddTime) > new DateTime(2013, 2, 1);
                // cmpResult = cmp.EqualValue(user.NickName);//下面一行建议用当前行的写法
                cmpResult = cmp.Comparer(user.NickName, "=", user.NickName);
            }
            if (user.ID > 0)
            {
                cmpResult = cmpResult & cmp.Property(user.UserName) == "ABC"
                            & cmp.Comparer(user.Password, "=", "111");
            }
            return(cmpResult);
        }
Exemple #15
0
        /// <summary>
        /// 获取管理员列表(分页)
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public JsonRsp <ProductTypeViewModel> GetPageList(string searchTxt, int pageIndex, int pageSize)
        {
            JsonRsp <ProductTypeViewModel> rsp = new JsonRsp <ProductTypeViewModel>();

            ProductTypeModel  pt = new ProductTypeModel();
            MerchantTypeModel mt = new MerchantTypeModel();
            OQLCompareFunc <ProductTypeModel> cmpFun = (cmp, u) =>
            {
                OQLCompare cmpResult = null;
                //and 条件
                cmpResult = cmpResult & cmp.Comparer(pt.ProductTypeName, OQLCompare.CompareType.Like, "%" + searchTxt + "%");
                //or
                cmpResult = cmpResult | cmp.Comparer(pt.TenantId, OQLCompare.CompareType.Equal, TenantId);
                return(cmpResult);
            };
            //Select 方法不指定具体要选择的实体类属性,可以推迟到EntityContainer类的MapToList 方法上指定
            OQL joinQ = OQL.From(pt)
                        .Join(mt).On(pt.MerchantTypeId, mt.ID)
                        .Select(pt.ID, pt.ProductTypeName, mt.MerchantTypeName, pt.Status, pt.CreateTime)
                        .Where(cmpFun)
                        .OrderBy(pt.Sort, "desc")
                        .END;

            joinQ.Limit(pageSize, pageIndex, true);
            PWMIS.DataProvider.Data.AdoHelper db = PWMIS.DataProvider.Adapter.MyDB.GetDBHelper();
            EntityContainer ec = new EntityContainer(joinQ, db);

            rsp.data = (List <ProductTypeViewModel>)ec.MapToList <ProductTypeViewModel>(() => new ProductTypeViewModel()
            {
                ID = pt.ID,
                ProductTypeName  = pt.ProductTypeName,
                MerchantTypeId   = mt.ID,
                MerchantTypeName = mt.MerchantTypeName,
                CreateId         = pt.CreateId,
                CreateUser       = pt.CreateUser,
                CreateIP         = pt.CreateIP,
                CreateTime       = pt.CreateTime,
                Status           = pt.Status,
            });

            rsp.success = true;
            rsp.code    = 0;
            rsp.count   = joinQ.PageWithAllRecordCount;
            return(rsp);
        }
Exemple #16
0
        /// <summary>
        /// 取得记录总数
        /// </summary>
        /// <param name="cp">where条件</param>
        /// <returns></returns>
        public static int GetRecordCounts <T>(OQLCompare cp) where T : EntityBase, ILongID, new()
        {
            T   m = new T();
            OQL q = new OQL(m);

            if ((object)cp != null)
            {
                q.Select().Count(m.ID, "Counts").Where(cp);
            }
            else
            {
                q.Select().Count(m.ID, "Counts");
            }

            T mCounts = EntityQuery <T> .QueryObject(q);

            return(Convert.ToInt32(mCounts.PropertyList("Counts")));
        }
Exemple #17
0
        static void UpdateTest()
        {
            LT_Users userCmp = new LT_Users()
            {
                Authority = "admin", IsEnable = true, Remarks = "add"
            };
            // LT_Users userQ = new LT_Users();
            //OQLCompare cmp = new OQLCompare(userCmp);
            //OQL q = new OQL(userQ);
            OQL        q   = new OQL(userCmp);
            OQLCompare cmp = new OQLCompare(q);

            cmp = cmp.Comparer(userCmp.ID, "in", new int[] { 1, 2, 3 })
                  & cmp.Comparer(userCmp.LastLoginIP, "=", "127.0.0.1");
            //------分界线-------

            q.Update(userCmp.Authority, userCmp.IsEnable, userCmp.Remarks).Where(cmp);

            Console.WriteLine("update test:{0}\r\n{1}", q, q.PrintParameterInfo());
        }
Exemple #18
0
        private static OQLCompareFunc <BCustomer, SalesOrder> GetCondtion1()
        {
            OQLCompareFunc <BCustomer, SalesOrder> cmpFun = (cmp, C, S) =>
            {
                OQLCompare cmpResult = null;
                cmpResult = cmp.Comparer(S.iBillID, OQLCompare.CompareType.Equal, 1);

                if (!string.IsNullOrEmpty(S.iOrderTypeID))
                {
                    cmpResult = cmpResult & cmp.Comparer(S.iOrderTypeID, OQLCompare.CompareType.Equal, S.iOrderTypeID);
                }

                int iCityID = 30;
                //由于调用了关联实体类的 S.iOrderTypeID 用于条件比较,所以下面的比较需要注意:
                //必须确保 Comparer 方法第一个参数调用为实体类属性,而不是待比较的值
                //    且第一个参数的值不能等于第三个参数的值,否则需要调用NewCompare() 方法
                cmpResult = cmpResult & cmp.Comparer(C.iCityID, OQLCompare.CompareType.Equal, iCityID);
                return(cmpResult);
            };

            return(cmpFun);
        }
Exemple #19
0
        public static void 分页查询()
        {
            SODUser user = new SODUser();

            OQL q = new OQL(user);

            OQLCompareFunc resultFunc = cmp =>
            {
                OQLCompare resultCmp = cmp.Comparer(user.ID, ">", 0);
                resultCmp = resultCmp & cmp.Comparer(user.LogName, "like", "%zhang%");
                return(resultCmp);
            };

            q.Select().Where(resultFunc).OrderBy(user.ID);
            //分页
            q.PageEnable             = true;
            q.PageWithAllRecordCount = 10;
            q.Limit(10, 1, true);
            var outlist = EntityQuery <SODUser> .QueryList(q);

            int pageCount = q.PageWithAllRecordCount;
        }
Exemple #20
0
        OQLCompare CreateCondition(OQLCompare cmp, Users user)
        {
            Users testUser = new Users {
                NickName = user.NickName, ID = user.ID
            };

            OQLCompare cmpResult = null;

            if (testUser.NickName != "")
            {
                cmpResult = cmp.Comparer(user.NickName, "=", user.NickName);
            }
            // 上面一行,也可以采用这样的写法: cmpResult = cmp.EqualValue(user.NickName);
            if (testUser.ID > 0)
            {
                cmpResult = cmpResult & cmp.Comparer(user.ID, "=", user.ID);
            }
            else
            {
                cmpResult = cmpResult & cmp.Comparer(user.UserName, "=", "zhang san")
                            & cmp.Comparer(user.Password, "=", "pwd111");
            }
            return(cmpResult);
        }