CYQ MAction,子表 新增,删除,修改 集合
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZDWorkflow.Model;
using ZDWorkflow.Common;
using ZDWorkflow.Common.Extensions;
using CYQ.Data;
using CYQ.Data.Orm;
using CYQ.Data.Table;
namespace ZDWorkflow.BLL
{
    /// <summary>
    /// GroupRole(角色组与角色关系表)
    /// </summary>
    public class GroupRoleBLL
    {
        /// <summary>
        /// 分组列表操作角色
        /// </summary>
        /// <param name="jsonRoles"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public ResultModel EditGroupRole(string jsonRoles, long GroupId, LoginUserInfo user)
        {
            ResultModel result = new ResultModel();
            using (MAction mc = new MAction(TableNames.GroupRole))
            {
                mc.BeginTransation();
                try
                {
                    //传到过来
                    List<GroupRole> grlistnew = new List<GroupRole>();
                    grlistnew = jsonRoles.ToObject<List<GroupRole>>();
                    // List<long> idsnew = new List<long>();
                    var idsnew = grlistnew.Select(s => s.RoleId).ToList();
//原数据库
                    List<GroupRole> grlistold = new List<GroupRole>();
                    MDataTable dt = mc.Select("GroupId=" + GroupId);
                    grlistold = dt.ToList<GroupRole>();
                    //List<long> idsold = new List<long>();
                    var idsold = grlistold.Select(s => s.RoleId).ToList();
#region 注释
                    //foreach (GroupRole item in grlistnew) {
//    GroupRole ditem = grlistold.FirstOrDefault(s => s.RoleId == item.RoleId);
                    //    if (ditem != null)
                    //    {
                    //        //新增
                    //    }
                    //    else
                    //    {
                    //        //修改
                    //        item.GroupId = GroupId;
                    //    }
                    //}
                    //删除
                    //var del= idsold.Where(w => !idsnew.Contains(w)).ToList();
                    #endregion
                    var a = idsnew.Intersect(idsold); // to modify
                    var b = idsnew.Except(idsold);    // to add
                    var c = idsold.Except(idsnew);    // to delete
                    List<GroupRole> toAddList = new List<GroupRole>();
                    List<GroupRole> toDeleteList = new List<GroupRole>();
                    List<GroupRole> toModifyList = new List<GroupRole>();
                    // set addList
                    foreach (var bitem in b)
                    {
                        var bModel = grlistnew.Find(p => p.RoleId == bitem);
                        bModel.GroupId = GroupId;
                        toAddList.Add(bModel);
                    }
                    //toAddList = grlistnew.Where(w => b.Contains(w.RoleId)).ToList();
                    // set delete querymodel
                    toDeleteList = grlistold.Where(w => c.Contains(w.RoleId)).ToList();
                    // set modify querymodel
                    toModifyList = grlistold.Where(w => a.Contains(w.RoleId)).ToList();
//新增
                    mc.Data.LoadFrom(toAddList);
                    mc.Insert();
//删除
                    foreach (GroupRole item in toDeleteList)
                    {
                        mc.SetPara("GroupId", item.GroupId);
                        mc.SetPara("RoleId", item.RoleId);
                        mc.Delete("GroupId=@GroupId and RoleId=@RoleId");
                    }
                    mc.EndTransation();
                    result.Status = (int)EStatus.Success;
                    result.Msg = "提交成功!";
                }
                catch (Exception ex)
                {
                    mc.RollBack();
                    result = ex;
                }
            }
            return result;
        }
    }
}
CYQ MAction,子表 新增,删除,修改 集合的更多相关文章
- oracle触发器,一个表新增、修改的同时同步另一张表
		oracle创建触发器,把本地新增.修改数据过程同步到另一个服务器上去. 如果是本地,加数据库名即可.如果是远程服务器,不是一台机器,做一个db_link操作即可. ----------------- ... 
- 将表A的数据复制到表B,以及关于主表和子表的删除办法
		如果表A的数据结构和表B的数据结构是一样的,字段名字可以不用相同,但是对应的数据类型是一样的 这样的情况下可以用如下的方式实现将表A的数据复制到表B INSERT INTO #TEMP2 SELECT ... 
- JavaScript学习笔记-商品管理新增/删除/修改功能
		<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ... 
- Javascript-商品管理新增/删除/修改功能
		<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ... 
- asp.net(C#)html无限分类树 可新增 删除 修改
		<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProductSort.aspx ... 
- DB2  alter 新增/删除/修改列
		SQL语句 增加列.修改列.删除列 1 添加字段 语法 : alter table 表名称 add 字段名称 类型 demo: alter table tableName add columnName ... 
- Oracle Delete inner的方式,级联删除子表的数据方式。
		例子1: from table2 b where a.id=b.id) 例子2: rebatepolicy表是主表,rebatepolicyitems是从表,从表有主表的主键,现在对于主表一些条件的数 ... 
- c#封装DBHelper类  c# 图片加水印  (摘)C#生成随机数的三种方法  使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象  c# 制作正方形图片  JavaScript 事件循环及异步原理(完全指北)
		c#封装DBHelper类 public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ... 
- Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法
		一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Orac ... 
随机推荐
- Oracle中创建Job实现自动插入值操作
			在PL/SQL Developer中创建Job --临时测试表 create table test_job ( id ), c_date date ); --临时序列 create sequence ... 
- TE7下的创建组件AxHost失败
			问题比较诡异.时好时坏的.网上的办法试过了,没用. 最后的解决办法是,把项目属性切换到Any CPU,然后勾选 32位优先,切换到界面设计状态,拖放控件,OK:运行,会出现红色提示:再次切换到项目属性 ... 
- Python爬虫教程-12-爬虫使用cookie爬取登录后的页面(人人网)(上)
			Python爬虫教程-12-爬虫使用cookie(上) 爬虫关于cookie和session,由于http协议无记忆性,比如说登录淘宝网站的浏览记录,下次打开是不能直接记忆下来的,后来就有了cooki ... 
- Idea工具使用
			Idea Project与module的理解 1.基础环境的搭建 1.1.IDEA使用--字体.编码和基本设置 2.插件的安装 2.1.在IDEA中配置Gauge环境 2.2.IdeaVim的安装:: ... 
- js 数据格式化
			//金额增加千分号formatPrice(123456.78) = 123,456.78 function formatPrice(val) { var parts = val.toString(). ... 
- js  浅拷贝有大用
			如题 像浅拷贝.深拷贝这类的知识点我们应该都明白是怎么回事,大部分都是在面试的时候会被问到.大多让你实现一个深拷贝.现实中我们都用比较暴力直接的手段 JSON stringify. 一句话就搞定,管他 ... 
- PPTP has become obsolete
			https://www.ovpn.com/en/blog/pptp-has-become-obsolete/ PPTP has become obsolete What is PPTP? PPTP s ... 
- python StringIO&BytesIO
			StringIO StringIO就是在内存中读写str 要把str写入StringIO,先创建一个StringIO >>> from io import StringIO>& ... 
- Micro
			Micro 架构与设计 Micro 架构与设计 翻译自 Micro architecture & design patterns for microservices 注: 原文作者即 Mi ... 
- mvc:view-controller 标签
			一.SpringMVC 会把ModelAndView 的model中的数据放到request 域中 二.如果不想让请求经过任何handler,而直接响应页面,可以使用 mvc:view-control ... 
