public void Multiple_UnitofWorkCommit() { Action work1 = () => { var t14Repo = LocalServiceLocator.GetService <IT14Repository>(); t14Repo.Add(new T14(Guid.NewGuid().ToString("N"), "ok")); t14Repo.Context.Commit(); //return t14Repo.Context; }; Action work2 = () => { var orderRepository = LocalServiceLocator.GetService <IYmtOrderRepository>(); var order = new YmtOrder("aacd0bc4-34e5-4c0f-a255-214d567698cd", "test_order", 77); order.AddOrderLine(new OrderLine(100)) .AddOrderLine(new OrderLine(120)) .AddOrderLine(new OrderLine(150)) .SetAddress(new ReceiptAddress { City = "A", Zip = "B", Street = "C" }); var verify = order.Validator(); Console.WriteLine(verify.Message); Assert.AreEqual(true, verify.Success); orderRepository.AddOrUpdate(e => e.Id, order); orderRepository.Context.Commit(); //return orderRepository.Context; }; MultipleUnitOfWorkBuilder.Instance.Commit(work1, work2); //using (MultipleUnitOfWorkBuilder.Instance.Append(work1).Append(work2).Commit()) //{ //}; }
public void SaveBath_Order() { var orderRepository = LocalServiceLocator.GetService <IYmtOrderRepository>(); //var orderList = new HashSet<Ymt_OrderLine>(); for (var i = 0; i < 50000; i++) { //1. var order = new YmtOrder(Guid.NewGuid().ToString(), "ok", 20M); order.SetAddress(new ReceiptAddress { City = "A", Street = "B", Zip = "CCC" }); //2. //这里是DTO映射到实体 //var order = orderDto.MapTo<OrderDto, Ymt_Order>(); //3. //这里是实体验证(实体需要继承 IValidatableObject 接口),主意:如果不显示执行xx.Validatory 方法,程序会自动隐式执行实体验证 var val = order.Validator(); Assert.AreEqual(true, val.Success, val.Message); //验证的原始写法 //var entityValidator = EntityValidatorFactory.CreateValidator(); //Assert.AreEqual(false, entityValidator.IsValid(order)); //3. // orderRepository.Add(order); } //4 var result = orderRepository.Context.Commit(); Assert.AreEqual(true, result.Success); Assert.AreEqual(3, result.ResultData); }
public void OneToOne_Order() { var order = new YmtOrder(Guid.NewGuid().ToString("N"), "TT", 55.78M); Assert.AreEqual(true, order.Validator().ResultData.Success); //1:1 order.SetAddress(new ReceiptAddress { City = "A", Street = "C", Zip = "D" }); var orderRepository = LocalServiceLocator.GetService <IYmtOrderRepository>(); orderRepository.Add(order); var x = orderRepository.Context.Commit(); Assert.AreEqual(1, x.ResultData); }
public void OneToMany_Order() { var order = new YmtOrder(Guid.NewGuid().ToString(), "test order", 12M); // order.AddOrderLine(new OrderLine(100)) .AddOrderLine(new OrderLine(120)) .AddOrderLine(new OrderLine(150)) .SetAddress(new ReceiptAddress { City = "A", Zip = "B", Street = "C" }); var orderRepository = LocalServiceLocator.GetService <IYmtOrderRepository>(); orderRepository.Add(order); var x = orderRepository.Context.AsyncCommit(); Assert.True(x.Result.ResultData > 0); }
public void AddOrUpdateOrder() { var orderRepository = new YmtOrderRepository(new EFUnitOfWork("orderContext"));//LocalServiceLocator.GetService<IYmtOrderRepository>(); var order = new YmtOrder("0000b222-db89-4c4b-b226-1fc694d3d065", "test order", 60); // order.AddOrderLine(new OrderLine(100)) .AddOrderLine(new OrderLine(120)) .AddOrderLine(new OrderLine(150)) .SetAddress(new ReceiptAddress { City = "A", Zip = "B", Street = "C" }); var verify = order.Validator(); Console.WriteLine(verify.Message); Assert.AreEqual(true, verify.Success); orderRepository.AddOrUpdate(e => e.Id, order); orderRepository.Context.Commit(); }
static void Main(string[] args) { var list = new List <YmtOrder>(50000); for (var i = 0; i < 3; i++) { //1. var order = YmtOrder.Create("ok", 20M); order.SetAddress(new ReceiptAddress { City = "A", Street = "B", Zip = "CCC" }); //2. //这里是DTO映射到实体 //var order = orderDto.MapTo<OrderDto, Ymt_Order>(); //3. //这里是实体验证(实体需要继承 IValidatableObject 接口),主意:如果不显示执行xx.Validatory 方法,程序会自动隐式执行实体验证 var val = order.Validator(); if (!val.Success) { throw new Exception("出错"); } //验证的原始写法 //var entityValidator = EntityValidatorFactory.CreateValidator(); //Assert.AreEqual(false, entityValidator.IsValid(order)); //3. // // orderRepository.Add(order); list.Add(order); } Console.Read(); SetUp(); var orderRepository = LocalServiceLocator.GetService <IYmtOrderRepository>(); //var orderList = new HashSet<Ymt_OrderLine>(); var watch = Stopwatch.StartNew(); for (var i = 0; i < 50000; i++) { //1. var order = YmtOrder.Create("ok", 20M); order.SetAddress(new ReceiptAddress { City = "A", Street = "B", Zip = "CCC" }); //2. //这里是DTO映射到实体 //var order = orderDto.MapTo<OrderDto, Ymt_Order>(); //3. //这里是实体验证(实体需要继承 IValidatableObject 接口),主意:如果不显示执行xx.Validatory 方法,程序会自动隐式执行实体验证 var val = order.Validator(); if (!val.Success) { throw new Exception("出错"); } //验证的原始写法 //var entityValidator = EntityValidatorFactory.CreateValidator(); //Assert.AreEqual(false, entityValidator.IsValid(order)); //3. // // orderRepository.Add(order); list.Add(order); } Console.WriteLine("添加耗时1 {0} 秒", watch.ElapsedMilliseconds / 1000.0); orderRepository.Add(list); Console.WriteLine("添加耗时2 {0} 秒", watch.ElapsedMilliseconds / 1000.0); //4 var result = orderRepository.Context.Commit(); Console.WriteLine("结果:{0},写入耗时 {1} 秒", result.ResultData, watch.ElapsedMilliseconds / 1000.0); Stop(); Console.Read(); }
public void ConcurrentTest() { if (YmatouFramework.Status != YmatouFrameworkStatus.Started) { throw new System.InvalidOperationException("框架未启动"); } var listTask = new List <Task>(); { var th = new Task(() => { YmtOrder tmpOrder = null; try { //new YmtOrderRepository(new EFUnitOfWork("orderContext")); // OrderRepo(orderRepository => { tmpOrder = orderRepository.FindOne("0000b222-db89-4c4b-b226-1fc694d3d065"); //tmpOrder.Name = string.Format("并发测试{0}",DateTime.Now.Second); Console.WriteLine("当前价格b{0}", tmpOrder.Price); tmpOrder.Price += 20; orderRepository.Update(tmpOrder); // using (var _context = orderRepository.UnitOfWork) { orderRepository.UnitOfWork.Commit(); } Console.WriteLine("当前价格b1 {0}", tmpOrder.Price); //orderRepository.Context.Dispose(); Console.WriteLine("当前线程1 {0}", Thread.CurrentThread.ManagedThreadId); }); // var orderRepository = LocalServiceLocator.GetService<IYmtOrderRepository>(); //using (var unitOfWork = LocalServiceLocator.GetService<IEFUnitOfWork>("order") /*LocalServiceLocator.GetService<IDbContextFactory>().CreateContext<YmtTradingUnitOfwork>()*/) //{ // var orderRepository = LocalServiceLocator.GetService<IRepositoryFactory>().CreateRepository<YmtOrder, YmtOrderRepository>(unitOfWork); // tmpOrder = orderRepository.FindOne("0000b222-db89-4c4b-b226-1fc694d3d065"); // Console.WriteLine("当前价格b {0}", tmpOrder.Price); // tmpOrder.Price += 20; // orderRepository.Update(tmpOrder); // //using (var _context = orderRepository.UnitOfWork) // //{ // orderRepository.UnitOfWork.Commit(); // //} // Console.WriteLine("当前价格b1 {0}", tmpOrder.Price); // Console.WriteLine("当前线程 {0}", Thread.CurrentThread.ManagedThreadId); //} } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }); var th2 = new Task(() => { YmtOrder tmpOrder = null; try { //new YmtOrderRepository(new EFUnitOfWork("orderContext")); // //var orderRepository = LocalServiceLocator.GetService<IYmtOrderRepository>(); OrderRepo(orderRepository => { tmpOrder = orderRepository.FindOne("0000b222-db89-4c4b-b226-1fc694d3d065"); //tmpOrder.Name = string.Format("并发测试{0}",DateTime.Now.Second); Console.WriteLine("当前价格a {0}", tmpOrder.Price); tmpOrder.Price += 10; orderRepository.Update(tmpOrder); // using (var _context = orderRepository.UnitOfWork) { orderRepository.UnitOfWork.Commit(); } Console.WriteLine("当前价格a2 {0}", tmpOrder.Price); //orderRepository.Context.Dispose(); Console.WriteLine("当前线程 {0}", Thread.CurrentThread.ManagedThreadId); }); //using (var unitOfWork = LocalServiceLocator.GetService<IEFUnitOfWork>("order") /*LocalServiceLocator.GetService<IDbContextFactory>().CreateContext<YmtTradingUnitOfwork>()*/) //{ // var orderRepository = LocalServiceLocator.GetService<IRepositoryFactory>().CreateRepository<YmtOrder, YmtOrderRepository>(unitOfWork); // tmpOrder = orderRepository.FindOne("0000b222-db89-4c4b-b226-1fc694d3d065"); // //tmpOrder.Name = string.Format("并发测试{0}",DateTime.Now.Second); // Console.WriteLine("当前价格a {0}", tmpOrder.Price); // tmpOrder.Price += 10; // orderRepository.Update(tmpOrder); // // using (var _context = orderRepository.UnitOfWork) // { // orderRepository.UnitOfWork.Commit(); // } // Console.WriteLine("当前价格a2 {0}", tmpOrder.Price); // //orderRepository.Context.Dispose(); // Console.WriteLine("当前线程 {0}", Thread.CurrentThread.ManagedThreadId); //} } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }); listTask.Add(th); listTask.Add(th2); } listTask.Each(e => e.Start()); Task.WaitAll(listTask.ToArray()); }