using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SqlSugar; namespace OrmTest { internal class UnitManyToMany { public static void Init() { var db = NewUnitTest.Db; db.CodeFirst.InitTables(); db.DbMaintenance.TruncateTable(); db.Insertable(new OperatorInfo() { id="1", createTime=DateTime.Now, isDel=1, isDisabled=1, openid="", phone="", pwd="", realname="a01", remark="a", sno="a", username="a01" }).ExecuteCommand(); db.Insertable(new OperatorInfo() { id = "2", createTime = DateTime.Now, isDel = 1, isDisabled = 1, openid = "", phone = "", pwd = "", realname = "a01", remark = "a", sno = "a", username = "admin" }).ExecuteCommand(); db.Insertable(new OperatorInfo() { id = "3", createTime = DateTime.Now, isDel = 1, isDisabled = 1, openid = "", phone = "", pwd = "", realname = "a01", remark = "a", sno = "a", username = "admin" }).ExecuteCommand(); var id=db.Insertable(new Role() { id=1, createTime=DateTime.Now, name="admin" }).ExecuteReturnIdentity(); var id2 = db.Insertable(new Role() { id = 2, createTime = DateTime.Now, name = "admin" }).ExecuteReturnIdentity(); db.Insertable(new RolePart() { Id = 1}).ExecuteCommand(); db.Insertable(new OptRole() { operId="1", roleId=id }).ExecuteCommand(); db.Insertable(new OptRole() { id=2, operId = "2", roleId = id2 }).ExecuteCommand(); db.Queryable() .Includes(x => x.Roles).Where(x => x.Roles.Any(z=>z.id==1)) .ToList(); var list = db.Queryable() .Includes(x => x.Roles).Where(x=>x.Roles.Any()).ToList(); if (list.Count != 2) { throw new Exception("unit error"); } var list3 = db.Queryable() .Includes(x => x.Roles).Where(x => x.Roles.Count()==0).ToList(); if (list3.Count != 1) { throw new Exception("unit error"); } var list2=db.Queryable() .Includes(x => x.Roles.MappingField(z=>z.name,()=>x.username).ToList()) .ToList(); var list4 = db.Queryable() .Includes(x => x.Roles.Skip(10).Take(1).ToList()) .ToList(); var list5 = db.Queryable() .Where(it => it.Roles.Any(z => z.RolePart.Id == 1)) .ToList(); db.DeleteNav(x=>x.id== list4.First().id) .Include(x => x.Roles,new DeleteNavOptions() { ManyToManyIsDeleteA=true, ManyToManyIsDeleteB=true }) .ExecuteCommand(); } /// /// 描述: /// 作者:synjones /// 时间:2022-04-20 21:30:28 /// [SugarTable("unit_operatorinfo")] public partial class OperatorInfo { /// /// 多角色 /// [Navigate(typeof(OptRole), nameof(OptRole.operId), nameof(OptRole.roleId))]//名字换 public List Roles { get; set; } /// /// 主键 /// [SugarColumn(IsPrimaryKey = true)] public string id { get; set; } /// /// 姓名 /// public string realname { get; set; } /// /// 账号 /// public string username { get; set; } /// /// 密码 /// public string pwd { get; set; } /// /// 学号 /// public string sno { get; set; } /// /// openid /// public string openid { get; set; } /// /// 手机号码 /// public string phone { get; set; } /// /// 备注信息 /// public string remark { get; set; } /// /// 创建日期 /// public DateTime createTime { get; set; } /// /// 状态(1:启用,2:禁用) /// public int isDisabled { get; set; } /// /// 是否删除(1:正常;2:删除) /// public int isDel { get; set; } } /// /// 描述: /// 作者:synjones /// 时间:2022-04-20 21:30:28 /// [SugarTable("unit_role1")] public partial class Role { /// /// 角色 /// [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int id { get; set; } /// /// 角色名称 /// public string name { get; set; } /// /// 创建时间 /// public DateTime createTime { get; set; } [Navigate(NavigateType.OneToOne,nameof(id))] public RolePart RolePart { get; set; } } public class RolePart { [SugarColumn(IsPrimaryKey =true)] public int Id { get; set; } } /// /// 描述: /// 作者:synjones /// 时间:2022-04-21 14:35:09 /// [SugarTable("unit_operator_role")] public partial class OptRole { /// /// /// [SugarColumn(IsPrimaryKey = true)] public int id { get; set; } /// /// /// public string operId { get; set; } /// /// /// public int roleId { get; set; } } } }