/////////////////////////////////
////////// expression filters////
/////////////////////////////////
db.Update(new Person{id =1,FirstName ="Jimi",LastName ="Hendrix",Age = 27 })
//UPDATE "Person" SET "FirstName" = 'Jimi',"LastName" = 'Hendrix',"Age" = 27 WHERE "Id" = 1
//In its most simple form, updating any model without any filters will update every field, except the Id which is used to filter the update to this specific record:

db.Update(new Person(id =1 ,FirstName = "JJ" , LastName = null,Age = null ),p => p.LastName =="Hendrix")
//UPDATE "Person" SET "Id" = 1,"FirstName" = 'JJ',"LastName" = NULL,"Age" = NULL WHERE ("LastName" = 'Hendrix')

db.Update<Person>(new {FirstName ="JJ"} ,q=>q.LastName =="Hendrix"); [1]
//Update Person Set FirstName ="JJ" Where LastName =="Hendrix"

//Or by using UpdateNonDefaults which only updates the non-default values in your model using the filter specified:
db.UpdateNonDefaults(new Person { FirstName = "JJ" }, p => p.LastName == "Hendrix");


db.UpdateOnly(new Person{ FirstName ="JJ"},p=>p.FirstName)
//UPDATE "Person" SET "FirstName" = 'JJ'

db.UpdateOnly(new Person{ FirstName = "JJ",Age =12},onlyField: p =>new { p.FirstName,p.Age })
//UPDATE "Person" SET "FirstName" = 'JJ', "Age" = 12


db.UpdateOnly( new Person{FirstName = "JJ"},onlyField :p=>p.FirstName ,Where:p=>p.LastName="Hendrix") ; //same with [1]
//UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("LastName" = 'Hendrix')

///////////////////////////////////
////ExpressionVisitor//////////////
///////////////////////////////////

Instead of using the expression filters above you can choose to use an ExpressionVisitor builder which provides more flexibility when you want to programatically construct the update statement:

db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, 
  onlyFields: q => q.Update(p => p.FirstName));
//Update Person Set FirstName ="JJ" ;

db.UpdateOnly(new Person{ FirstName="JJ" },onlyFields:q=>q.Update(p=>p.FirstName).Where(s=>s.LastName=="Hendrix"))
//UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("LastName" = 'Hendrix')

///////////////////////////////////////////////////
///ultimate un-typed, string-based expressions. ///
///////////////////////////////////////////////////

db.Update<Person>(set:"FirstName={0}".Params("JJ"),where:"LastName={0}".Params("Hendrix"))

db.Update(table:"Person",set:"FirstName={0}".Params("JJ"),where:"LastName={0}".params("Hendrix"))

///UpdateAll //take IEnumerables.

UpdateAll

