原创

Dos.ORM使用方法 - Update更新操作

 24926  2015/08/02 00:00:00

car_5

创建DbSession对象:

public class DB
{
    public static readonly DbSession Context = new DbSession("DosConn");
}

修改单个字段:

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

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

//SQL语句:UPDATE table SET name='ITdos',sex='girl' WHERE id=1
var uptModel = new Model.table();
uptModel.name = "ITdos";
uptModel.sex = "girl";
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")
));