Exemplo n.º 1
0
 public void UpdateLockTest()
 {
     TestDB.DB.Test db = new TestDB.DB.Test("server=192.168.0.151;uid=sa;pwd=sa!@#123;database=Test", DatabaseType.SqlServer);
     db.BeginTransaction();
     try
     {
         db.UpdateLock(db.UserInfo.Where(m => m.UserName == "way"));
         db.UpdateLock(db.UserInfo.Where(m => m.UserName == "way"));
         db.CommitTransaction();
     }
     catch (Exception)
     {
         db.RollbackTransaction();
         throw;
     }
 }
Exemplo n.º 2
0
        public void ConcatTest()
        {
            TestDB.DB.Test db       = new TestDB.DB.Test("server=192.168.0.151;uid=sa;pwd=sa!@#123;database=Test", DatabaseType.SqlServer);
            var            userinfo = from m in db.UserInfo
                                      select new {
                myname = m.UserName,
                id     = m.id
            };

            var accountinfo = from m in db.UserAccount
                              select new
            {
                myname = m.AccountName,
                id     = m.id
            };

            var result = userinfo.Concat(accountinfo);
            var ret    = result.ToArray();
        }
Exemplo n.º 3
0
        public void InsertUpdateDelete()
        {
            using (var db = new TestDB.DB.Test(ConStr, DatabaseType.SqlServer))
                using (var tran = db.BeginTransaction())
                {
                    for (int i = 0; i < 10; i++)
                    {
                        var user = new User();
                        user.Name       = "test_user" + i;
                        user.Birthday   = DateTime.Now;
                        user.IntColumn1 = i;
                        db.Insert(user);
                    }

                    //var ar = (from m in db.User
                    //          select new User
                    //          {
                    //              Name = m.Name
                    //          }).ToArray();

                    var list = db.User.Where(m => m.Name.StartsWith("test_user")).ToArray();
                    if (list.Length < 10)
                    {
                        throw new Exception("数量不对");
                    }

                    for (int i = 0; i < 10; i++)
                    {
                        if (list.Any(m => m.Name == "test_user" + i && m.Birthday != null && m.IntColumn1 == i) == false)
                        {
                            throw new Exception("数据错误");
                        }
                    }

                    for (int i = 0; i < 10; i++)
                    {
                        var user = list.FirstOrDefault(m => m.Name == "test_user" + i && m.Birthday != null && m.IntColumn1 == i);
                        user.Name       = "test_user" + (i + 10);
                        user.IntColumn1 = i + 10;
                        db.Update(user);
                    }

                    list = db.User.Where(m => m.Name.StartsWith("test_user")).ToArray();
                    for (int i = 0; i < 10; i++)
                    {
                        if (list.Any(m => m.Name == "test_user" + (i + 10) && m.Birthday != null && m.IntColumn1 == (i + 10)) == false)
                        {
                            throw new Exception("数据错误");
                        }
                    }

                    for (int i = 0; i < 10; i++)
                    {
                        var user = list[i];
                        user.SetValue <User>(m => m.IntColumn1 == m.IntColumn1 + 2);
                        db.Update(user);
                    }

                    list = db.User.Where(m => m.Name.StartsWith("test_user")).ToArray();
                    for (int i = 0; i < 10; i++)
                    {
                        if (list.Any(m => m.Name == "test_user" + (i + 10) && m.Birthday != null && m.IntColumn1 == (i + 12)) == false)
                        {
                            throw new Exception("数据错误");
                        }
                    }

                    var syslog = new TestDB.SysLog();
                    syslog.UserId     = list[0].id;
                    syslog.Time       = DateTime.Now;
                    syslog.SystemPath = "my sys path";
                    syslog.SysId      = "sys id";
                    db.Insert(syslog);

                    var usrlog = new TestDB.UserLog();
                    usrlog.UserId     = list[1].id;
                    usrlog.Time       = DateTime.Now;
                    usrlog.PeopleName = "my People Name";
                    db.Insert(usrlog);

                    var admlog = new TestDB.AdminLog();
                    admlog.UserId  = list[2].id;
                    admlog.Time    = DateTime.Now;
                    admlog.AdminId = "my ad id";
                    db.Insert(admlog);

                    var logs = db.Log.ToArray();
                    if (logs.Any(m => m is TestDB.SysLog) == false)
                    {
                        throw new Exception("数据错误");
                    }
                    if (logs.Any(m => m is TestDB.UserLog) == false)
                    {
                        throw new Exception("数据错误");
                    }
                    if (logs.Any(m => m is TestDB.AdminLog) == false)
                    {
                        throw new Exception("数据错误");
                    }

                    logs = db.Log.Include(m => m.User).ToArray();
                    if (logs[0].User == null)
                    {
                        throw new Exception("数据错误");
                    }

                    var syslogs = db.SysLog.Include(m => m.User).ToArray();
                    if (syslogs[0].User == null)
                    {
                        throw new Exception("数据错误");
                    }

                    //测试删除

                    db.Delete(db.User);

                    if (db.Log.Count() > 0)
                    {
                        throw new Exception("没有级联删除");
                    }
                }
        }
Exemplo n.º 4
0
        public void 乐观锁()
        {
            using (var db = new TestDB.DB.Test(ConStr, DatabaseType.SqlServer))
            {
                db.Delete(db.User.Where(m => m.Name.StartsWith("lock_test")));

                for (int i = 0; i < 50; i++)
                {
                    var user = new TestDB.User {
                        Name       = "lock_test",
                        IntColumn1 = 0
                    };
                    db.Insert(user);
                }

                var count = db.User.Where(m => m.Name.StartsWith("lock_test") && m.IntColumn1 == 0).Count();
                if (count < 50)
                {
                    throw new Exception("数量不对");
                }
            }



            int unSuccessCount = 0;
            int SuccessCount   = 0;

            //并发
            Parallel.For(0, 300, (index) => {
                using (var db = new TestDB.DB.Test(ConStr, DatabaseType.SqlServer))
                {
                    while (true)
                    {
                        var user = db.User.FirstOrDefault(m => m.Name.StartsWith("lock_test") && m.IntColumn1 == 0);
                        if (user == null)
                        {
                            Interlocked.Increment(ref unSuccessCount);
                            return;
                        }

                        user.IntColumn1 = index + 1;
                        if (db.Update(user, m => m.IntColumn1 == 0 && m.id == user.id) > 0)
                        {
                            Interlocked.Increment(ref SuccessCount);
                            return;
                        }
                    }
                }
            });

            using (var db = new TestDB.DB.Test(ConStr, DatabaseType.SqlServer))
            {
                var count = db.User.Where(m => m.Name.StartsWith("lock_test") && m.IntColumn1 > 0).Count();
                if (count < 50)
                {
                    throw new Exception("数量不对");
                }

                count = (from m in db.User
                         group m by m.IntColumn1 into g
                         select g.Key).Count();

                if (count < 50)
                {
                    throw new Exception("数量不对");
                }
            }

            if (SuccessCount != 50)
            {
                throw new Exception("成功数量不对");
            }

            if (unSuccessCount != 250)
            {
                throw new Exception("失败数量不对");
            }
        }
Exemplo n.º 5
0
 public void DeleteTest()
 {
     TestDB.DB.Test db = new TestDB.DB.Test("server=192.168.0.151;uid=sa;pwd=sa!@#123;database=Test", DatabaseType.SqlServer);
     db.Delete(db.UserInfo.Where(m => m.UserName == "way"));
 }