2012年11月3日星期六

医生orm之count、where的若干问题

医生orm之count、where的若干问题

ps:先讲一个笑话

        话说医生orm的生成工具的源码价值10RMB,这是什么概念呢?是在4环附近请医生吃一碗兰州拉面,在6环吃两碗,如果在1环请呢?医生在找我10rmb,所以大家还是在一环请他吃饭吧,买它工具转账什么的太麻烦了,让他带上工具源码+10rmb来一环。。。。。。。。。。。。。。。。。。。。。。1

上周看看了看简单的基本操作,剩下就是where、group、count、delete 等常用操作

相关的基本的sql和model见:http://www.cnblogs.com/qqloving/archive/2012/10/28/2743269.html

医生的 where and or 简直就是琵琶,建议医生做个demo出来走两步,让大家围观一下

我的文章在注释里面!

 

Delete的demo

 

医生的dele操作没有逻辑删除字段是在是欠妥,应该加一个逻辑删除和物理删除的

  protected void Page_Load(object sender, EventArgs e)
        {
            SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
            EntityQuery<SuperMarket.userinfo> query2 = new EntityQuery<SuperMarket.userinfo>(objuserinfo, true);
            //根据id删除
            objuserinfo.id = 37;
            int flag = query2.Delete(objuserinfo);
            Response.Write(flag);
            //话说根据一个where条件批量删除该怎么弄呢?
        }

count的demo

        protected void Page_Load(object sender, EventArgs e)
        {
            SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
            EntityQuery<SuperMarket.userinfo> query2 = new EntityQuery<SuperMarket.userinfo>
                (objuserinfo, true);
            OQL Query = new OQL(objuserinfo);
            OQL result = Query.Select().Count(objuserinfo.id, "id").END;
            //ps 由于不知道医生这个orm暂时如何查询偶返回第一行第一列
            //     但医生的orm的对应关系,你懂得,这就是知道原理的好处。。。。。。。。。。。。。。
            // 弱弱的问一下医生,如果写下面的代码????????????????
            SuperMarket.userinfo objuserinfo2 = EntityQuery<SuperMarket.userinfo>.QueryObject(result);
            Response.Write(objuserinfo2.id);
        }

 

group 的demo

        protected void Page_Load(object sender, EventArgs e)
        {
            SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
            EntityQuery<SuperMarket.userinfo> query2 = new EntityQuery<SuperMarket.userinfo>
                (objuserinfo, true);
            OQL Query = new OQL(objuserinfo);
            OQL myusery = Query.Select(objuserinfo.username).GroupBy(objuserinfo.username).END;
 
            //话说这个地方,我怎么知道一个 oql 是返回一个list 还是一个model???还是一个 int。。。。。
            //
           List< SuperMarket.userinfo> objuserinfo2 = EntityQuery<SuperMarket.userinfo>.QueryList(myusery);
           foreach (SuperMarket.userinfo item in objuserinfo2)
           {
               Response.Write(item.username+"</br>");
           }
 
        }

 
 

 

where and or 的demo

        protected void Page_Load(object sender, EventArgs e)
        {
            ///////
            // PS 吐槽一下,每一个查询,都要实例化这三个东西,是不是有点多余??。。。。。。。
            SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
            EntityQuery<SuperMarket.userinfo> query2 = new EntityQuery<SuperMarket.userinfo>
                (objuserinfo, true);
            OQL Query = new OQL(objuserinfo);
            ///////////
            objuserinfo.username = "互联网fans";
            OQL Query1 = Query.Select().Where(objuserinfo.username, "=" ).END;
           List< SuperMarket.userinfo> test1 = EntityQuery<SuperMarket.userinfo>.QueryList(Query1);
            //我去,这种老百姓喜欢的写法竟然不支持,话说这个写法也太奇葩了
           //  OQL Query1= Query.Select().Where(objuserinfo.username = "互联网fans").END;
 
            //默认应该是and吧
            objuserinfo.userpassword="1234567";
           OQL Query2 = Query.Select().Where(objuserinfo.username, "=", objuserinfo.userpassword,"=" ).END;
           List<SuperMarket.userinfo> test2 = EntityQuery<SuperMarket.userinfo>.QueryList(Query2);
 
            //来一个 or 
            //是在是太矛盾了 这个地方又要赋值了,无力吐槽了
           //OQL Query3 = Query.Select().Where(objuserinfo.username, "=", Query.Condition.OR(objuserinfo.userpassword, "=", "1234567")).END;
           //这个方式也不支持。。。。。。。。
 
           OQL Query3 = Query.Select().Where(Query.Condition.OR(objuserinfo.userpassword, "=", "1234567").OR(objuserinfo.username, "=", "互联网fans")).END;
 
           List<SuperMarket.userinfo> test3 = EntityQuery<SuperMarket.userinfo>.QueryList(Query3);
 
            //这个到底是and 还是or 呢?圆方怎么看医生呢?
           OQL Query4 = Query.Select().Where(Query.Condition.OR(objuserinfo.userpassword, "=", "1234567").AND(objuserinfo.username, "=", "互联网fans")).END;
 
           List<SuperMarket.userinfo> test4 = EntityQuery<SuperMarket.userinfo>.QueryList(Query4);
            
 
            //更复杂的 and 和or 
            //根据不同条件拼接 and 和or
            //医生来做个示范动作!
        }




TAG: