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); }
/// <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; } }
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()); }
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()); }
/// <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)); }
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); }
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); }
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()); }
/// <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; } }
OQLCompare CreateCondition(OQLCompare cmp, CustomModel custom) { OQLCompare cmpResult = null; if (custom.CustomName != "") { cmpResult = cmp.Comparer(custom.CustomName, OQLCompare.CompareType.Like, "%" + custom.CustomName + "%"); } return(cmpResult); }
OQLCompare CreateCondition(OQLCompare cmp, ProductTypeModel ProductType) { OQLCompare cmpResult = null; if (ProductType.ProductTypeName != "") { cmpResult = cmp.Comparer(ProductType.ProductTypeName, OQLCompare.CompareType.Like, "%" + ProductType.ProductTypeName + "%"); } return(cmpResult); }
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()); }
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(); }
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); }
/// <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); }
/// <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"))); }
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()); }
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); }
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; }
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); }