博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq 更改主键值
阅读量:6157 次
发布时间:2019-06-21

本文共 999 字,大约阅读时间需要 3 分钟。

有一个班级表,主键是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;
            }
     
        }

 

转载地址:http://bkafa.baihongyu.com/

你可能感兴趣的文章
发布和逸出-构造过程中使this引用逸出
查看>>
使用SanLock建立简单的HA服务
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>
Docker镜像与容器命令
查看>>
批量删除oracle中以相同类型字母开头的表
查看>>
Java基础学习总结(4)——对象转型
查看>>
BZOJ3239Discrete Logging——BSGS
查看>>
SpringMVC权限管理
查看>>
spring 整合 redis 配置
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>