当前位置: 首页 > 工具软件 > Dos.ORM > 使用案例 >

Dos.ORM Update更新操作

萧胜
2023-12-01

修改单个字段:

 

1 //SQL语句:UPDATE table SET name='ITdos' WHERE id=1
2 //一般只修改单个值的时候推荐这种写法
3 DB.Context.Update<table>(table._.name, "ITdos", table._.id == 1);

 

根据主键直接修改一条数据:

 

1 //SQL语句:UPDATE table SET name='ITdos',sex='girl' WHERE id=1
2 var uptModel = new Model.table();
3 uptModel.name = "ITdos";
4 uptModel.sex = "girl";
5 var count = DB.Context.Update<table>(uptModel,d => d.id == 1);

 

根据取到的实体修改部分字段:

//SQL语句:UPDATE table SET name='ITdos',sex='girl' WHERE id=1
var uptModel = DB.Context.From<table>().Where(d => d.id == 1).First();
if(uptModel == null)
{
    return "不存在要修改的数据";
}
uptModel.name = "ITdos";
uptModel.sex = "girl";
//这里没有传入d.id==1是因为该实体是从数据库获取
//uptModel.id已经包含了主键值,ORM内部会自动加上主键条件。
//当然为了放心点,像上面一样把d=>d.id==uptModel.id条件写上也行。
var count = DB.Context.Update<table>(uptModel);

批量修改数据:

 

var listModel = DB.Context.From<table>().ToList();
foreach(var entity in listModel){
    entity.name = "ITdos";
    entity.sex = "man";
}
//批量修改方法内部是事务操作。
var count = DB.Context.Update<table>(listModel);

 

修改表所有字段:

 

 

//以上写法都是仅仅修改指定字段
//如:model.name="ITdos";model.sex="man";修改了实体中两个属性
//ORM会记住您修改了上面2个字段,所以在生成SQL的时候仅仅是:
//UPDATE table SET name='ITdos',sex='girl' WHERE id=1
//如果想修改表中所有字段,请使用.UpdateAll():
var uptModel = DB.Context.From<table>().ToList();
uptModel.name = "ITdos";
uptModel.sex = "girl";
var count = DB.Context.UpdateAll<table>(uptModel,d => d.id == uptModel.id);

 

子查询条件修改:

 

//SQL语句:UPDATE table SET sex='man' WHERE id IN
//    (SELECT id FROM table WHERE name='ITdos')
var uptModel = new TestTable();
uptModel.sex = "man";
var count2 = DB.Content.Update<table>(uptModel,table._.id.SubQueryIn(
    DB.Content.From<table>().Select(d => d.id).Where(d => d.name == "ITdos")
));

 

转载于:https://www.cnblogs.com/zhibu/articles/6270191.html

 类似资料: