public void TestQueueUserWorkItem() { DBTool.BeginThread(); try { Thread.Sleep(random.Next(5000)); ILnskyDBTransactionMain temp; using (var tran = DBTool.BeginTransaction()) { temp = DBTool.GetLnskyDBTransactionMain(); if (LnskyDBTransactionMain != null) { Assert.AreNotEqual(temp, LnskyDBTransactionMain); } LnskyDBTransactionMain = temp; TestProductSaleByDayNSGet(); } using (var tran = DBTool.BeginTransaction()) { var temp2 = DBTool.GetLnskyDBTransactionMain(); Assert.AreEqual(temp, temp2); } } finally { DBTool.CloseConnections(); } }
private void TestTranAdd(bool isCommit) { var repository = GetRepository(); var lst = repository.GetList(); List <ProductSaleByDayNSEntity> newLst; using (var tran = DBTool.BeginTransaction()) { TestProductSaleByDayNSAdd(); newLst = repository.GetList(); Assert.True(lst.Count < newLst.Count); if (isCommit) { tran.Complete(); } } if (isCommit) { newLst = repository.GetList(); Assert.True(lst.Count + 1 == newLst.Count); } else { newLst = repository.GetList(); Assert.True(lst.Count == newLst.Count); } }
public void TestProductSaleByDayNSAddUpdateDelete() { using (var tran = DBTool.BeginTransaction()) { TestProductSaleByDayNSAdd(); TestProductSaleByDayNSUpdate(); TestProductSaleByDayNSUpdateWhere(); TestProductSaleByDayNSDelete(); tran.Complete(); } }
public void TestProductSaleByDayNSTransaction() { using (var tran = DBTool.BeginTransaction()) { TestProductSaleByDayGet(); TestProductSaleByDayGetList(); TestProductSaleByDayGetPaging(); TestProductSaleByDayAddUpdate(); tran.Complete(); } }
private void TestTranUpdateWhere(bool isCommit) { var repository = GetRepository(); var where = QueryFactory.Create <ProductSaleByDayNSEntity>(m => !m.ProductName.Contains("批量修改Where") && m.ProductName.Contains("修改"));//where是更新条件 var count = repository.Count(where); var updateEntity = new ProductSaleByDayNSEntity() { DataSource = "测试来源批量修改", ProductName = "商品批量修改Where" }; using (var tran = DBTool.BeginTransaction()) { Assert.AreEqual(tran.TransactionIndex, 1); using (var tran2 = DBTool.BeginTransaction()) { Assert.AreEqual(tran2.TransactionIndex, 2); //注意如果是更新用的是实体类的DBModel_ShuffledTempDate Query中的无效 int updateCount = repository.Update(updateEntity, where); Assert.AreEqual(updateCount, count); Assert.AreNotEqual(updateCount, 0); if (isCommit) { tran.Complete(); } } } using (var tran = DBTool.BeginTransaction()) { Assert.AreEqual(tran.TransactionIndex, 1); } if (isCommit) { var newcount = repository.Count(where); Assert.AreNotEqual(count, newcount); } else { var newcount = repository.Count(where); Assert.AreEqual(count, newcount); } using (var tran = DBTool.BeginTransaction()) { Assert.AreEqual(tran.TransactionIndex, 1); } }
public void TestQueueUserWorkItem() { using (DBTool.BeginThread()) { Thread.Sleep(random.Next(5000)); ILnskyDBTransactionMain temp; using (DBTool.BeginThread()) { using (var tran = DBTool.BeginTransaction()) { temp = DBTool.GetLnskyDBTransactionMain(); if (LnskyDBTransactionMain != null) { Assert.AreNotEqual(temp, LnskyDBTransactionMain); } LnskyDBTransactionMain = temp; TestProductSaleByDayNSGet(); } } using (var tran = DBTool.BeginTransaction()) { var temp2 = DBTool.GetLnskyDBTransactionMain(); Assert.AreEqual(temp, temp2); } } bool isOk = false; try { TestProductSaleByDayNSGet(); } catch (Exception e) { isOk = true; } Assert.True(isOk); }
private void TestTranDelete(bool isCommit) { var repository = GetRepository(); var query = QueryFactory.Create <ProductSaleByDayNSEntity>(); query.And(m => !m.DataSource.Contains("修改")); query.OrderByDescing(m => m.StatisticalDate); query.StarSize = new Random().Next(5); query.Rows = 1; var model = repository.GetPaging(query).ToList()[0]; using (var tran = DBTool.BeginTransaction()) { repository.Delete(model); var deleteCount = repository.Delete(m => m.DataSource == "测试来源批量修改"); Assert.True(deleteCount > 0); if (isCommit) { tran.Complete(); } } if (isCommit) { var delModel = repository.Get(new ProductSaleByDayNSEntity { SysNo = model.SysNo }); Assert.IsNull(delModel); } else { var delModel = repository.Get(new ProductSaleByDayNSEntity { SysNo = model.SysNo }); Assert.IsNotNull(delModel); } }
public string Index() { if (isRuning == true) { return("正在运行中"); } lock (lockObj) { isRuning = true; try { var repositoryNSFactory = RepositoryFactory.Create <ProductSaleByDayNSEntity>(); if (repositoryNSFactory.GetList(m => m.CreateDate > DateTime.Now.Date).Count > 100) { return(""); } var shopRepository = RepositoryFactory.Create <ShopEntity>(); shopRepository.Delete(QueryFactory.Create <ShopEntity>()); for (int i = 0; i < 10; i++) { using (var tran = DBTool.BeginTransaction()) { var shop = new ShopEntity { SysNo = Guid.NewGuid().ToString(), ShopCode = "00" + i, ShopName = "测试店铺" + i, ShopType = i % 3, IsDelete = false, }; shopRepository.Add(shop); tran.Complete(); } } lstShop = shopRepository.GetList(QueryFactory.Create <ShopEntity>()); var importGroupId = Guid.NewGuid(); var random = new Random(); repositoryNSFactory.Delete(QueryFactory.Create <ProductSaleByDayNSEntity>()); var tempDate = new DateTime(2018, 1, 1); using (var tran = DBTool.BeginTransaction()) { while (tempDate <= DateTime.Now) { foreach (var p in dicProduct) { var tempNS = new ProductSaleByDayNSEntity(); tempNS.DataSource = lstDataSource[random.Next(lstDataSource.Count)]; var shop = lstShop[random.Next(lstShop.Count)]; tempNS.ShopID = shop.SysNo; tempNS.ProductID = p.Key.ToString(); tempNS.OutProductID = p.Value; tempNS.ProductName = p.Value; tempNS.Sales = random.Next(100000); tempNS.StatisticalDate = tempDate; tempNS.CreateDate = DateTime.Now; tempNS.CreateUserID = Guid.NewGuid().ToString(); tempNS.ImportGroupId = importGroupId.ToString(); repositoryNSFactory.Add(tempNS); } tempDate = tempDate.AddDays(1); } tran.Complete(); } } finally { isRuning = false; } return("初始化成功"); } }
private void TestTranUpdate(bool isCommit) { var repository = GetRepository(); var queryCount = QueryFactory.Create <ProductSaleByDayNSEntity>(); queryCount.And(m => m.DataSource == "测试来源修改"); var preCount = repository.Count(queryCount); ProductSaleByDayNSEntity model; using (var tran = DBTool.BeginTransaction()) { var query = QueryFactory.Create <ProductSaleByDayNSEntity>(); query.And(m => m.DataSource != "测试来源修改"); query.OrderByDescing(m => m.StatisticalDate); query.StarSize = new Random().Next(5); query.Rows = 1; model = repository.GetPaging(query).ToList()[0]; model.DataSource = "测试来源修改"; model.ProductName = "测试商品修改"; //根据主键更新其他字段 var r = repository.Update(model); Assert.True(r); var nextCount = repository.Count(queryCount); Assert.AreEqual(preCount + 1, nextCount); var entity = repository.Get(new ProductSaleByDayNSEntity { SysNo = model.SysNo }); Assert.NotNull(entity); Assert.AreEqual(model.SysNo, entity.SysNo); Assert.AreEqual(model.DataSource, entity.DataSource); Assert.AreEqual(model.ProductName, entity.ProductName); if (isCommit) { tran.Complete(); } } if (isCommit) { var nextCount = repository.Count(queryCount); Assert.AreEqual(preCount + 1, nextCount); var entity = repository.Get(new ProductSaleByDayNSEntity { SysNo = model.SysNo }); Assert.NotNull(entity); Assert.AreEqual(model.SysNo, entity.SysNo); Assert.AreEqual(model.DataSource, entity.DataSource); Assert.AreEqual(model.ProductName, entity.ProductName); } else { var nextCount = repository.Count(queryCount); Assert.AreEqual(preCount, nextCount); var entity = repository.Get(new ProductSaleByDayNSEntity { SysNo = model.SysNo }); Assert.NotNull(entity); Assert.AreEqual(model.SysNo, entity.SysNo); Assert.AreNotEqual(model.DataSource, entity.DataSource); Assert.AreNotEqual(model.ProductName, entity.ProductName); } }
public string Index() { if (isRuning == true) { return("正在运行中"); } lock (lockObj) { isRuning = true; try { using (var tran = DBTool.BeginTransaction()) { var repositoryFactory = RepositoryFactory.Create <ProductSaleByDayEntity>(); var query = QueryFactory.Create <ProductSaleByDayEntity>(m => m.CreateDate > DateTime.Now.Date); query.DBModel.DBModel_ShuffledTempDate = new DateTime(2019, 09, 01); if (repositoryFactory.GetList(query).Count > 10) { return(""); } var importGroupId = Guid.NewGuid(); var random = new Random(); var tempDate = new DateTime(2018, 1, 1); while (tempDate <= new DateTime(2019, 12, 31)) { if (tempDate.Day == 1) { query = QueryFactory.Create <ProductSaleByDayEntity>(); query.DBModel.DBModel_ShuffledTempDate = tempDate; repositoryFactory.Delete(query); } foreach (var p in dicProduct) { var temp = new ProductSaleByDayEntity(); temp.SysNo = Guid.NewGuid(); temp.DataSource = lstDataSource[random.Next(lstDataSource.Count)]; temp.ShopName = "测试店铺"; temp.ProductID = p.Key; temp.OutProductID = p.Value; temp.ProductName = p.Value; temp.Sales = random.Next(100000); temp.StatisticalDate = tempDate; temp.UpdateDate = temp.CreateDate = DateTime.Now; temp.UpdateUserID = temp.CreateUserID = Guid.NewGuid(); temp.ImportGroupId = importGroupId; repositoryFactory.Add(temp); } tempDate = tempDate.AddDays(1); } tran.Complete(); } } finally { isRuning = false; } return("初始化成功"); } }
/// <summary> /// 保存交易 /// </summary> /// <param name="saleFlow"></param> /// <param name="payFlow"></param> /// <param name="card"></param> /// <param name="msg"></param> /// <returns></returns> public static bool SaveTrade(MSaleFlow[] saleFlow, MPayFlow[] payFlow, out MCzCard card, out string msg) { if (saleFlow.Length == 0 || payFlow.Length == 0) { msg = "流水不完整"; card = null; return(false); } //查询储值卡信息 if (!CzkDAL.GetCzCard(payFlow.First().Ref_no, out card, out msg)) { return(false); } //检测卡余额 if (card.Total - card.CzkType.KbMoney < payFlow.First().Total) { msg = "该卡余额不足"; return(false); } //扣减余额 card.Total -= payFlow.First().Total; card.XfTotal += payFlow.First().Total; SqlTransaction tran; //开启事务 if (!DBTool.BeginTransaction(out tran, out msg)) { return(false); } //插入商品流水 if (!SaveSaleFlow(saleFlow, tran, out msg)) { if (DBTool.RollbackTransaction(tran, out msg)) { msg = "保存商品流水失败"; return(false); } else { msg = "保存商品流水错误,回滚操作失败"; return(false); } } //插入付款流水 if (!SavePayFlow(payFlow, tran, out msg)) { if (DBTool.RollbackTransaction(tran, out msg)) { msg = "保存付款流水失败"; return(false); } else { msg = "保存付款流水错误,回滚操作失败"; return(false); } } //保存储值卡信息 if (!CzkDAL.SaveCzCard(card, tran, out msg)) { if (DBTool.RollbackTransaction(tran, out msg)) { msg = "保存储值卡信息失败"; return(false); } else { msg = "保存储值卡错误,回滚操作失败"; return(false); } } //提交事务 if (!DBTool.CommitTransaction(tran, out msg)) { msg = "提交事务失败,已回滚"; return(false); } //交易成功,查询余额 if (!CzkDAL.GetCzCard(payFlow.First().Ref_no, out card, out msg)) { msg = "交易成功后确认余额失败"; } return(true); }