前言
在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中接触了一些新的东西,知道的越多感觉不会的越多;感觉有好多都不会,效率还是不高,有待提高。
版权声明:本文为boniesunshine原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。