就地修改
就地修改方法是值ObjectSet的Delete(或者RemoveDirectly),SetAttribute,IncreaseAttribute三个方法,这三个方法无需调用SaveChanges方法即可保存至持久层。但同时,这三个方法也只能修改当前对象集合,不会更改他们的关联对象。
直接删除方法接收一个参数,用于筛选所有符合条件的对象并加以删除,并会返回受到影响的行数。
//直接删除对象集合中所有符合IntNumber == 1的对象
var affectCount = context.Beans.Delete(p => p.IntNumber == 1);
或者
var affectCount = context.Beans.RemoveDirectly(p => p.IntNumber == 1);
直接修改方法(设置新值)接收两个参数,一个是新值键值对集合,这个集合要与持久化中的对应字段相匹配,否则会报错;另一个是筛选条件,这与之前的直接删除方法一致。此方法会返回受到影响的行数,并将指定的字段覆盖为新的值。
//直接修改对象集合中所有符合IntNumber == 1的对象 将DateTime修改至当前时间
var affectCount = context.Beans.SetAttributes(new[] {new KeyValuePair<string, object>("DateTime", DateTime.Now)},
p => p.IntNumber == 1);
直接修改方法(递增新值)接收两个参数,一个是新值键值对集合,这个集合要与持久化中的对应字段相匹配,否则会报错;另一个是筛选条件,这与之前的直接删除方法一致。此方法会返回受到影响的行数,并将指定的字段以累加的方式设置为新的值,即上方的例子中如果DecimalNumber是2,则调用IncreaseAttributes后会被设置成3。
//直接修改对象集合中所有符合IntNumber == 1的对象 将DateTime修改至当前时间
var affectCount = context.Beans.IncreaseAttributes(new[] {new KeyValuePair<string, object>("DecimalNumber", 1)},p => p.IntNumber == 1);