public void BatchInsert() { using var split = CreateForBatch("BatchInsert"); var list = new List <Role2> { new Role2 { Name = "管理员" }, new Role2 { Name = "高级用户" }, new Role2 { Name = "普通用户" } }; var rs = list.BatchInsert(); Assert.Equal(list.Count, rs); var list2 = Role2.FindAll(); Assert.Equal(list.Count, list2.Count); Assert.Contains(list2, e => e.Name == "管理员"); Assert.Contains(list2, e => e.Name == "高级用户"); Assert.Contains(list2, e => e.Name == "普通用户"); }
public void RWTest() { // 准备连接字符串。故意放到不同库上 DAL.AddConnStr("rw_test", "Data Source=data\\rw_test.db", null, "SQLite"); DAL.AddConnStr("rw_test.readonly", "Data Source=data\\rw_test_readonly.db", null, "SQLite"); // 反向工程建表 var d1 = DAL.Create("rw_test"); var d2 = DAL.Create("rw_test.readonly"); Role2.Meta.ConnName = "rw_test"; d1.SetTables(Role2.Meta.Table.DataTable); d2.SetTables(Role2.Meta.Table.DataTable); var n1 = Role2.Meta.Count; var name = Rand.NextString(8); XTrace.WriteLine("开始RWTest name={0}", name); // 先删掉原来可能有的 var r0 = Role2.FindByName(name); r0?.Delete(); // 主库插入数据 XTrace.WriteLine("主库插入数据"); var r = new Role2(); r.Name = name; r.Insert(); // 如果查询落在从库,不可能查到。因为这个测试用例故意分开为不同的库 XTrace.WriteLine("从库查一下"); var r2 = Role2.Find(Role2._.Name == name); //XTrace.WriteLine("FindByName: {0}", r2.ToJson()); Assert.Null(r2); // 更新数据,还在主库 XTrace.WriteLine("再次更新主库"); r.IsSystem = true; r.Update(); // 再找一次,理论上还是没有 XTrace.WriteLine("再找一次从库"); var r3 = Role2.Find(Role2._.Name == name); //XTrace.WriteLine("Find: {0}", r3.ToJson()); Assert.Null(r3); XTrace.WriteLine("删除数据"); r.Delete(); XTrace.WriteLine("查从库记录数"); var n = Role2.FindCount(); XTrace.WriteLine("count={0}", n); }
public void BatchReplace() { using var split = CreateForBatch("Replace"); var list = new List <Role2> { new Role2 { Name = "管理员", Remark = "guanliyuan" }, new Role2 { Name = "高级用户", Remark = "gaoji" }, new Role2 { Name = "普通用户", Remark = "putong" } }; var rs = list.BatchInsert(); Assert.Equal(list.Count, rs); var gly = list.FirstOrDefault(e => e.Name == "管理员"); Assert.NotNull(gly); Assert.Equal("guanliyuan", gly.Remark); XTrace.WriteLine(Role2.FindAll().ToJson()); list = new List <Role2> { new Role2 { Name = "管理员" }, new Role2 { Name = "游客", Remark = "guest" }, }; rs = list.BatchReplace(); // 删除一行,插入2行,但是影响行为2,这一点跟MySql不同 Assert.Equal(2, rs); var list2 = Role2.FindAll(); XTrace.WriteLine(list2.ToJson()); Assert.Equal(4, list2.Count); Assert.Contains(list2, e => e.Name == "管理员"); Assert.Contains(list2, e => e.Name == "高级用户"); Assert.Contains(list2, e => e.Name == "普通用户"); Assert.Contains(list2, e => e.Name == "游客"); var gly2 = list2.FirstOrDefault(e => e.Name == "管理员"); Assert.NotNull(gly2); Assert.Null(gly2.Remark); // 管理员被删除后重新插入,自增ID改变 Assert.NotEqual(gly.ID, gly2.ID); }
public async Task <ActionResult> Register(RegisterViewModel model) { var Recommend = Session["RecommendCode"] == null ? string.Empty : Session["RecommendCode"].ToString(); ViewBag.Recommend = Recommend; model.Recommend = Recommend; model.UserCode = new Anything.Helpers.BaseDLL().GetUserCode(model.UserName); model.UserType = "User"; if (ModelState.IsValid) { var user = new ApplicationUser2 { UserName = model.UserName, Email = model.Email, UserType = model.UserType, UserCode = model.UserCode, Recommend = model.Recommend }; var result = await UserManager2.CreateAsync(user, model.Password); if (result.Succeeded) { var roleName = model.UserType; if (!RoleManager2.RoleExists(roleName)) { var role = new Role2(roleName); await RoleManager2.CreateAsync(role); } UserManager2.AddToRole(user.Id, model.UserType); var code = await UserManager2.GenerateEmailConfirmationTokenAsync(user.Id); var callbackUrl = Url.Action("ConfirmEmail", "AccountForUser", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); var link = string.Format("信箱驗證連結網址<a href='{0}'>完成驗證</a>", callbackUrl); await UserManager2.SendEmailAsync(user.Id, "MYAnything 信箱驗證", link); ViewBag.Link = callbackUrl; return(View("DisplayEmail")); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }
public async Task <ActionResult> Join(RegisterViewModel model) { var Recommend = Session["RecommendCode"] == null ? string.Empty : Session["RecommendCode"].ToString(); ViewBag.Recommend = Recommend; //AddRoles(); //var Recommend = string.Empty; if (string.IsNullOrEmpty(model.Recommend)) { model.Recommend = OfficalRecommendCode; } else { model.Recommend = GetRecommendUserCode(model.Recommend); } //model.Recommend = Recommend; model.UserCode = new Anything.Helpers.BaseDLL().GetUserCode(model.UserName); model.UserType = "User"; if (ModelState.IsValid) { var user = new ApplicationUser2 { UserName = model.UserName, Email = model.Email, UserType = model.UserType, UserCode = model.UserCode, Recommend = model.Recommend }; var result = await UserManager2.CreateAsync(user, model.Password); if (result.Succeeded) { var roleName = model.UserType; if (!RoleManager2.RoleExists(roleName)) { var role = new Role2(roleName); await RoleManager2.CreateAsync(role); } UserManager2.AddToRole(user.Id, model.UserType); var code = await UserManager2.GenerateEmailConfirmationTokenAsync(user.Id); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); await UserManager2.SendEmailAsync(user.Id, "MYAnything 信箱驗證", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); ViewBag.Link = callbackUrl; return(View("DisplayEmail")); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }