关闭

lambda表达式更新数据库

标签: lambda
994人阅读 评论(66) 收藏 举报
分类:

前言


在Itoo中,遇到了要用lambda表达式来更新数据的需求,之前接触过用lambda表达式查询的代码,但是更新还是第一次遇到,在大神的帮助下,又学到一点。

lambda表达式更新数据

 ta_userrole t_UserRole = new ta_userrole();//定义要更新的那张表

 t_UserRole.IsDeleted = "Y";//要更新的字段

 this.DbSession.TA_UserRoleDal.Update(t_UserRole,u => u.UserId.ToString () == userid && u.IsDeleted == "N","IsDeleted");//(表名,条件,要更新的字段)


需要先确定要更新哪张表和那个字段,然后再lambda表达式中写上表名,条件,要更新的字段。

补充


下面是往userrole这张表中添加数据的方法的代码:

/// 保存用户的角色,将用户ID和角色ID进行绑定,将绑定关系存入用户角色表。 操作时先将用户已有的角色进行删除,然后重新绑定的的角色
        /// </summary>
        /// <param name="listUser"></param>
        /// <param name="listRole"></param>
        public void AddUserRole(List<UserViewModel> listUser, List<RoleViewModel> listRole)
        {


            //try
            //{

                //遍历所有用户
                foreach (var user in listUser)
                {
                    var userid = user.UserId.ToString();//把GUID转成字符串
                    //将数据库UserRole表中该用户的数据删除
                    //this.DbSession.TA_UserRoleDal.DelBy(n => n.UserId == userid);

                    //this.DbSession.SaveChanges();
                    //this.DbSession.TA_UserRoleDal.Update(a => a.UserId == userid && a.IsDeleted == 'N');
                    //如果ta_userrole表中存在该用户的角色,把该记录的isdeleted改成Y
                    ta_userrole t_UserRole = new ta_userrole();//定义要更新的那张表
                    t_UserRole.IsDeleted = "Y";//要更新的字段
                    this.DbSession.TA_UserRoleDal.Update(t_UserRole,u => u.UserId.ToString () == userid && u.IsDeleted == "N","IsDeleted");//(表名,条件,要更新的字段)

                    //遍历所有角色
                    foreach (var role in listRole)
                    {
                        //得到一个新的UserRole底层实体
                        ta_userrole enUserRole = new ta_userrole();
                        Guid userRoleId = Guid.NewGuid();
                        enUserRole.UserRoleId = userRoleId.ToString();
                        enUserRole.UserId = user.UserId.ToString();
                        //enUserRole.UserId = "3e23005c-6940-43c0-b264-fa2401bf079b";
                        enUserRole.RoleId = role.RoleId.ToString();
                        //enUserRole.RoleId = "c972a533-f369-439a-a46f-dc835025c65d";
                        enUserRole.TimeSpan = DateTime.Now;
                        enUserRole.IsDeleted = "N";

                        //将这条数据保存到数据库中
                        this.DbSession.TA_UserRoleDal.Add(enUserRole);

                    }


                }
                this.DbSession.SaveChanges();
            //}
            //catch (Exception)
            //{
            //    throw;
            //}

        }


解释:
该方法是实现对多个用户批量分配角色的功能。用了两个嵌套循环遍历每个用户的每个角色。其中用到了表和实体的映射。传过来的是两个list,把这两个list中字段的值直接赋给表的字段。之前代码用的是mapper,因为出错并没有深究,然后就才用了把list属性直接赋给表字段的方法来实现这个功能。

总结


在itoo中接触了一些新的东西,知道的越多感觉不会的越多;感觉有好多都不会,效率还是不高,有待提高。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45387次
    • 积分:7860
    • 等级:
    • 排名:第2830名
    • 原创:107篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2247条