using System; using NUnit.Framework; using Microsoft.Extensions.DependencyInjection; using OpenAuth.Repository.Domain; using OpenAuth.Repository.Interface; namespace OpenAuth.Repository.Test { /// /// 测试事务 /// class TestTransaction : TestBase { /// /// 测试事务正常提交 /// [Test] public void NormalSubmit() { var unitWork = _autofacServiceProvider.GetService>(); unitWork.ExecuteWithTransaction(() => { var account = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss"); AddAndUpdate(account, unitWork); }); } /// /// 测试事务回滚 /// [Test] public void SubmitWithRollback() { var unitWork = _autofacServiceProvider.GetService>(); var account = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss"); try { unitWork.ExecuteWithTransaction(() => { AddAndUpdate(account, unitWork); throw new Exception("模拟异常"); }); } catch (Exception e) { Console.WriteLine(e); } //如果没有插入成功,表示事务发生了回滚 Assert.IsFalse(unitWork.Any( u=>u.Id == account)); } /// /// 测试添加,单个修改,Z.EntityFramework.Plus条件修改 /// private void AddAndUpdate(string account, IUnitWork unitWork) { var user = new User { Id = account, Account = account, Name = account, }; unitWork.Add(user); unitWork.Save(); user.Account = "Trans_" + user.Account; user.Name = "Trans_" + user.Name; unitWork.Update(user); unitWork.Save(); unitWork.Update(u => u.Id == account, u => new User { Account = "Trans2_" + user.Account }); } } }