zoukankan      html  css  js  c++  java
  • Linq 更改主键值

    有一个班级表,主键是class_id,在管理班级时要进行逻辑删除,而只是单纯的is_del字段(记录每条数据是否有效)更改为true,主键class_id如果不变动,在再次增加一个班级时,其主键如果和某条逻辑删除的数据主键是相同的,那么将会操作失败,因为主键不能重复,所以需要更改逻辑删除的信息的主键值,例如在前面加个字符D,然而linq是不允许修改主键值的,为了防止并发操作引起的错误,所以要想是实现更改主键的功能,只能是先将此条信息复制出来,修改后再重新插入一条数据,然后再把原来的那条数据删除了,也就实现了修改主键的功能。

    下面是我写的逻辑删除函数

     public bool delete(string id)
            {
                Model.G_class temp = (from row in DB.G_class where row.class_id == id select row).First();
                Model.G_class newRow = new Model.G_class();//重新创建一个对象

                //不能直接让newRow = temp,然后再更改newRow,因为那样成了引用操作,而我们要做的是重新建立对象后进行复制操作
                newRow.class_id = "D" + temp.class_id;//修改主键值
                newRow.class_name = temp.class_name;
                newRow.class_max = temp.class_max;
                newRow.class_blog = temp.class_blog;
                newRow.class_memo = temp.class_memo;
                newRow.kindergarten_type = temp.kindergarten_type;
                newRow.is_del = true;//逻辑删除字段更改
                try
                {
                    Table<Model.G_class> table = DB.GetTable<Model.G_class>();
                    DB.G_class.DeleteOnSubmit(temp);//删除原来数据
                    table.InsertOnSubmit(newRow);//插入新的数据
                    DB.SubmitChanges();
                    return true;
                }
                catch
                {
                    return false;
                }
         
            }

  • 相关阅读:
    SpringBoot 创建 console程序
    SpringBoot 参数检查 Controller中检查参数是否合法
    SpringBoot 使用maven创建springboot项目
    idea 社区版本创建javaweb项目 使用jetty
    idea 社区版本创建javaweb项目 使用tomcat
    mysql 主从 设置
    windows 使用nginx
    Linux 安装Nginx
    闭包小应用
    js小程序写法优化
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3209181.html
Copyright © 2011-2022 走看看