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 ...
随机推荐
- 28_Future模式1
[Future模式] Future模式类似商品订单.比如在网购时,当看中一件商品时,就可以提交订单,当订单处理完成后,在家里等待商品送货上门即可.或者类似我们发送Ajax请求的时候,页面是异步的进行后 ...
- Python爬虫教程-34-分布式爬虫介绍
Python爬虫教程-34-分布式爬虫介绍 分布式爬虫在实际应用中还算是多的,本篇简单介绍一下分布式爬虫 什么是分布式爬虫 分布式爬虫就是多台计算机上都安装爬虫程序,重点是联合采集.单机爬虫就是只在一 ...
- 如何优雅地使用Markdown (Sublime 3 + MarkdownEditing+OmniMarkupPreviewer)
最近开始上手Sublime 3 作为Markdown 的重度使用者自然关于Markdown的插件是必不可少的 . 在这里记录分享一下我常用的两款Markdown插件. MarkdownEditing ...
- 面试准备之三Django知识
Django请求流程 MTV模式 路由 视图 ORM 模板
- eclipse安装checkStyle
今天用eclipse mars 安装checkstyle 代码测试工具,安装完后重启竟然没有,最后发现原来是 自己安装的步骤错了,记录下. 1. 我的版本是:Version: Mars.2 Relea ...
- 未在本机注册Microsoft.ACE.OleDb.12.0
服务器版本:Windows Server 2008 R2 64位.IIS7 已经安装了Microsoft Access database engine 2010 X64. 在服务器上可以用SQL Se ...
- mysql登录:access denied for user 'root'@'localhost'(using password:YES)
mysql登录: access denied for user 'root'@'localhost'(using password:YES) 解决: use mysql; select user,ho ...
- gmock使用、原理及源码分析
1 初识gmock 1.1 什么是Mock 便捷的模拟对象的方法. 1.2 Google Mock概述 google mock是用来配合google test对C++项目 ...
- linux自动备份oracle数据库
#此脚本只备份数据表,而且为了方便恢复数据是做的单表逐个备份#在写脚本过程中遇到的报错均加入了解决方案的链接(虽然错误代码没有贴出来)#最终将在脚本所在目录生成年月日-时分的目录,目录下为表名.dmp ...
- libevent核心-event和event_base结构体
参考:http://blog.csdn.net/yusiguyuan/article/category/2171081/2 http://blog.csdn.net/sparkliang/articl ...