前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# SqlSugar框架的学习使用(五)-- 更新和删除数据的详细用法

C# SqlSugar框架的学习使用(五)-- 更新和删除数据的详细用法

作者头像
Vaccae
发布2019-08-20 16:56:06
12.1K0
发布2019-08-20 16:56:06
举报
文章被收录于专栏:微卡智享

前言

上一篇《C# SqlSugar框架的学习使用(四)-- 插入数据的详细用法》我们已经把SqlSugar的插入多种用法实现了,这篇我们就来说说更新数据和删除数据的多种用法。我们就用上一篇的数据表POSTemp进行操作。

更新和删除里面大部分用法与插入的方式差不多,所以我们这里不全部举例了,把一些不同的重点做一下。

数据更新

SqlSugar更新分为2大类写法,1种是传实体对象的方式 这种是以实体对象为核心进行更新,不传实体对象这种是以表达式为核心进行更新

代码语言:javascript
复制
//传实体对象写法(支持批量对象)
db.Updateable(updateObj) 
 
//不传实体对象写法
db.Updateable<T>()

传对象的用法


根据实体更新(主键要有值,主键是更新条件)

加入按钮

代码语言:javascript
复制
       private void tsmnuupdatecls_Click(object sender, EventArgs e)
        {
            try
            {
                POSTemp pos = _db.Queryable<POSTemp>()
                    .Where(t => t.Posno == "0001").First();
                pos.OrgCode = "002";
                pos.status = "0";

                int count = _db.Updateable(pos).ExecuteCommand();
                TextShow("更新了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

传入对象根据条件更新

代码语言:javascript
复制
        private void tsmnuupdatewhere_Click(object sender, EventArgs e)
        {
            try
            {
                POSTemp pos = _db.Queryable<POSTemp>()
                    .Where(t => t.Posno == "0002").First();
                pos.OrgCode = "003";
                pos.status = "2";

                int count = _db.Updateable(pos)
                    .UpdateColumns(p=>new {p.OrgCode,p.status,p.Posno})
                    .WhereColumns(t=>new {t.Posno})
                    .ExecuteCommand();
                TextShow("更新了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

其余的用法与插入类似,就不再全部举例了。

不传对象的用法

代码语言:javascript
复制
//正确写法
 var t10 = db.Updateable<Student>()
.UpdateColumns(it => new Student() { Name = "a", CreateTime = DateTime.Now })
.Where(it => it.Id == 11).ExecuteCommand();
 
//错误写法
var st=new Student() { Name = "a", CreateTime = DateTime.Now };
var t10 = db.Updateable<Student>()
.UpdateColumns(it => st)
.Where(it => it.Id == 11).ExecuteCommand();
代码语言:javascript
复制
        private void tsbtnupdatenotcls_Click(object sender, EventArgs e)
        {
            try
            {
                int count = _db.Updateable<POSTemp>()              
                    .SetColumns(p => new POSTemp(){status = "3"})
                    .Where(t => t.OrgCode=="001")
                    .ExecuteCommand();
                TextShow("更新了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

联表更新

代码语言:javascript
复制
        private void tsmnuupdateunion_Click(object sender, EventArgs e)
        {
            try
            {
                int count = _db.Updateable<POSTemp>()
                    .SetColumns(p => new POSTemp()
                    {
                        status = SqlFunc.Subqueryable<POS>()
                            .Where(x=>x.Posno==p.Posno)
                            .Select(x=>x.status)
                    })
                    .Where(t => t.OrgCode == "003")
                    .ExecuteCommand();
                TextShow("更新了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

根据不同条件执行更新不同的列

代码语言:javascript
复制
        private void tsmnuupdatecasewhere_Click(object sender, EventArgs e)
        {
            try
            {
                POSTemp pos = _db.Queryable<POSTemp>()
                    .Where(t => t.Posno == "0001").First();
                int count = _db.Updateable(pos)
                    .SetColumnsIF(pos.status == "0", t =>
                        new POSTemp() {status = "5"})
                    .SetColumnsIF(pos.status == "5", t =>
                        new POSTemp() {status = "9"})
                    .ExecuteCommand();
                TextShow("更新了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

我们看看点击执行两次的结果


保存或者插入

该功能是根据主键判断是否存在,如果存在则更新,不存在则插入,支持批量操作。

这里也是只演示基本操作,后面的详细操作和插入及更新一样。

代码语言:javascript
复制
        private void tsmnusave_Click(object sender, EventArgs e)
        {
            try
            {
                POSTemp pos = new POSTemp();
                pos.Posno = "0015";
                pos.Posname = "15款台";
                pos.OrgCode = "001";
                pos.status = "1";

                int count = _db.Saveable(pos).ExecuteCommand();
                TextShow("更新了" + count + "条数据");

                pos.Posname = "15款台1";
                count = _db.Saveable(pos).ExecuteCommand();
                TextShow("更新了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

上面代码中我们执行了两次,在第二次执行的时候我们把名称修改了一下,看看输入的语句


数据删除

根据实体删除

代码语言:javascript
复制
        private void tsmnudeletecls_Click(object sender, EventArgs e)
        {
            try
            {
                POSTemp pos = new POSTemp();
                pos.sn = 16;
                pos.Posno = "0015";
                pos.Posname = "15款台";
                pos.OrgCode = "001";
                pos.status = "1";

                int count = _db.Deleteable(pos).ExecuteCommand();
                TextShow("删除了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

根据表达式删除

我们这次先试试删除为Posno是0014的数据

然后再删除status为3和9的数据

代码语言:javascript
复制
        private void tsmnudeletewhere_Click(object sender, EventArgs e)
        {
            try
            {
                int count = _db.Deleteable<POSTemp>()
                    .Where(t=>t.Posno=="0014")
                    .ExecuteCommand();
                TextShow("删除了" + count + "条数据");

                //删除status为3和9的数据
                List<string> statList=new List<string>();
                statList.Add("3");
                statList.Add("9");
                count = _db.Deleteable<POSTemp>()
                    .Where(t => statList.Contains(t.status))
                    .ExecuteCommand();
                TextShow("删除了" + count + "条数据");
            }
            catch (Exception ex)
            {
                TextShow(ex.Message);
            }
        }

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档