예제 #1
0
            public static void Sync(long roleId, List <long> approveIds)
            {
                var t = APDBDef.ResRoleApprove;

                using (APDBDef db = new APDBDef())
                {
                    var existIds = APQuery.select(t.ApproveId)
                                   .from(t)
                                   .where (t.RoleId == roleId).query(db, reader =>
                    {
                        return(reader.GetInt64(0));
                    }).ToList();

                    db.BeginTrans();
                    try
                    {
                        foreach (var id in approveIds)
                        {
                            if (existIds.Contains(id))
                            {
                                existIds.Remove(id);
                            }
                            else
                            {
                                db.ResRoleApproveDal.Insert(new ResRoleApprove(0, roleId, id));
                            }
                        }
                        if (existIds.Count > 0)
                        {
                            db.ResRoleApproveDal.ConditionDelete(t.RoleId == roleId & t.ApproveId.In(existIds.ToArray()));
                        }

                        db.Commit();
                    }
                    catch
                    {
                        db.Rollback();
                    }
                }
            }