Always use this.transaction() so things get cached appropriately