Example #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("====**************** PDF.NET SOD ORM 控制台测试程序 **************====");
            Assembly coreAss = Assembly.GetAssembly(typeof(AdoHelper));//获得引用程序集

            Console.WriteLine("框架核心程序集 PWMIS.Core Version:{0}", coreAss.GetName().Version.ToString());
            Console.WriteLine();
            Console.WriteLine(@"====应用程序配置文件默认的数据库配置信息:===========================
当前使用的数据库类型是:{0}
连接字符串为:{1}
请确保数据库服务器和数据库是否有效(SqlServer,Access 会自动创建数据库),
继续请回车,退出请输入字母 Q ."
                              , MyDB.Instance.CurrentDBMSType.ToString(), MyDB.Instance.ConnectionString);
            Console.WriteLine("=====Power by Bluedoctor,2015.3.1 http://www.pwmis.com/sqlmap =======");
            string read = Console.ReadLine();

            if (read.ToUpper() == "Q")
            {
                return;
            }

            Console.WriteLine();
            Console.WriteLine("-------PDF.NET SOD ORM 测试 开始 ---------");
            //自动创建数据库和表
            LocalDbContext context = new LocalDbContext();
            int            count   = 0;

            //测试查询&&更新
            User zhang_san = new User()
            {
                Name = "zhang san"
            };
            User dbZhangSan = EntityQuery <User> .QueryObject(
                OQL.From(zhang_san)
                .Select(zhang_san.ID, zhang_san.Name, zhang_san.Pwd)
                .Where(cmp => cmp.EqualValue(zhang_san.Name))
                .END
                );

            if (dbZhangSan != null)
            {
                dbZhangSan.Pwd          = "111111";
                dbZhangSan.RegistedDate = DateTime.Now;

                int updateCount = EntityQuery <User> .Instance.Update(dbZhangSan);

                Console.WriteLine("测试:用户{0} 的密码和注册日期已经更新", zhang_san.Name);
            }
            else
            {
                Console.WriteLine("测试:用户{0} 的记录不存在,如果需要测试查询和更新,请先添加一条记录。继续测试,请按任意键。", zhang_san.Name);
                Console.Read();
            }
            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
            watch.Start();
            //删除 测试数据-----------------------------------------------------
            User user    = new User();
            OQL  deleteQ = OQL.From(user)
                           .Delete()
                           .Where(cmp => cmp.Comparer(user.ID, ">", 0)) //为了安全,不带Where条件是不会全部删除数据的
                           .END;

            count = EntityQuery <User> .ExecuteOql(deleteQ, context.CurrentDataBase);

            Console.WriteLine("--删除 {0}条数据--", count);
            //-----------------------------------------------------------------

            //插入 测试数据-----------------------------------------------------
            count     = 0;
            zhang_san = new User()
            {
                Name = "zhang san", Pwd = "123"
            };
            count += context.Add <User>(zhang_san);//采用 DbContext 方式插入数据

            User li_si = new User()
            {
                Name = "li si", Pwd = "123"
            };
            OQL insertQ = OQL.From(li_si)
                          .Insert(li_si.Name);  //仅仅插入用户名,不插入密码

            //采用OQL方式插入指定的数据
            //同时演示事务使用方法
            AdoHelper          db        = MyDB.GetDBHelperByConnectionName("local");
            EntityQuery <User> userQuery = new EntityQuery <User>(db);

            //db.BeginTransaction();
            //try
            //{
            //    count += userQuery.ExecuteOql(insertQ);

            //    // userQuery.GetInsertIdentity(insertQ); 获取插入标识,用词方法代替下面的方式
            //    //OQL 方式没法取得自增数据,所以下面单独查询
            //    object obj_id = db.ExecuteScalar(db.InsertKey);
            //    db.Commit();
            //    li_si.ID = Convert.ToInt32( obj_id);
            //}
            //catch (Exception ex)
            //{
            //    Console.WriteLine("AdoHelper 执行事务异常:"+ex.Message );
            //    db.Rollback();
            //    Console.WriteLine("按任意键退出!");
            //    return;
            //}

            //上面的代码注释,采用下面封装的代码:ExecuteInsrtOql
            li_si.ID = userQuery.ExecuteInsrtOql(insertQ);
            List <User> batchList = new List <User>();

            for (int i = 0; i < 1000; i++)
            {
                User zhang_yeye = new User()
                {
                    ID = 1000 + i, Name = "zhang yeye" + i, Pwd = "pwd" + i
                };
                //count += EntityQuery<User>.Instance.Insert(zhang_yeye);//采用泛型 EntityQuery 方式插入数据
                batchList.Add(zhang_yeye);
            }
            watch.Stop();
            Console.WriteLine("耗时:(ms)" + watch.ElapsedMilliseconds);

            watch.Restart();
            count = EntityQuery <User> .Instance.QuickInsert(batchList);

            watch.Stop();
            Console.WriteLine("QuickInsert List 耗时:(ms)" + watch.ElapsedMilliseconds);

            watch.Restart();
            count = EntityQuery <User> .Instance.Insert(batchList);

            watch.Stop();
            Console.WriteLine("Insert List 耗时:(ms)" + watch.ElapsedMilliseconds);

            Console.WriteLine("--插入 {0}条数据--", count);
            //-----------------------------------------------------------------

            //修改 测试数据----------------------------------------------------
            li_si.Pwd = "123123";
            count     = context.Update <User>(li_si);//采用 DbContext 方式更新数据

            li_si.Pwd = "123456";
            OQL updateQ = OQL.From(li_si)
                          .Update(li_si.Pwd)   //仅仅更新密码
                          .END;

            count += EntityQuery <User> .Instance.ExecuteOql(updateQ);//采用OQL方式更新指定的数据

            li_si.Pwd = "888888";
            count    += EntityQuery <User> .Instance.Update(li_si);//采用泛型 EntityQuery 方式修改数据

            Console.WriteLine("--修改 {0}次数据,User ID:{1}--", count, li_si.ID);
            //-----------------------------------------------------------------

            //查询数据---------------------------------------------------------
            Console.WriteLine("SOD ORM的 6种 查询方式,开始----");
            UserLoginService service = new UserLoginService();

            Console.WriteLine("Login0:{0}", service.Login(zhang_san));
            Console.WriteLine("Login1:{0}", service.Login1(zhang_san));
            Console.WriteLine("Login2:{0}", service.Login2("zhang san", "123"));
            Console.WriteLine("Login3:{0}", service.Login3("zhang san", "123"));
            Console.WriteLine("Login4:{0}", service.Login4("zhang san", "123"));
            Console.WriteLine("Login5:{0}", service.Login5("zhang san", "123"));
            Console.WriteLine("Login6:{0}", service.Login6("zhang yeye", "pwd100"));
            //查询列表
            var users = service.FuzzyQueryUser("zhang");

            Console.WriteLine("模糊查询姓 张 的用户,数量:{0}", users.Count);
            //-----------------------------------------------------------------

            Console.WriteLine("-------PDF.NET SOD ORM 测试 全部结束----- ");

            watch.Stop();
            Console.WriteLine("耗时:(ms)" + watch.ElapsedMilliseconds);
            Console.Read();
        }