diff --git a/src/Common/EntityUpdateWrap.ts b/src/Common/EntityUpdateWrap.ts index 0d672af73..9a877bb82 100644 --- a/src/Common/EntityUpdateWrap.ts +++ b/src/Common/EntityUpdateWrap.ts @@ -2,27 +2,32 @@ import { Entity } from "../DatabaseServices/Entity/Entity"; export function EntityUpdateWrap(ent: Entity, exec: Function) { - let bak = ent.AutoUpdate; + let oldAutoUpdate = ent.AutoUpdate; ent.AutoUpdate = false; exec(); - ent.DeferUpdate(); - ent.AutoUpdate = bak; + if (oldAutoUpdate)//如果原先是自动更新的,那么我们更新它,否则还是不更新(避免层层嵌套导致的性能优化丢失) + ent.DeferUpdate(); + ent.AutoUpdate = oldAutoUpdate; } export function EntitysUpdateWrap(ens: Entity[], exec: Function) { let baks = ens.map(e => { + let oldAutoUpdate = e.AutoUpdate; e.AutoUpdate = false; - return e.AutoUpdate; + return oldAutoUpdate; }); exec(); for (let i = 0; i < ens.length; i++) { - let en = ens[i]; - en.DeferUpdate(); - en.AutoUpdate = baks[i]; + if (baks[i]) + { + let en = ens[i]; + en.DeferUpdate(); + en.AutoUpdate = true; + } } }