internal void AddIndex(EntityModel owner, EntityIndexModel index) { owner.CheckDesignMode(); owner.CheckOwner(index.Owner); //TODO:同上AddMember var layer = ModelLayer.DEV; var seq = layer == ModelLayer.DEV ? ++_devIndexIdSeq : ++_usrIndexIdSeq; if (seq >= MaxIndexId) //TODO:找空的 { throw new Exception("IndexId out of range"); } byte indexId = (byte)(seq << 2 | (byte)layer); if (index.Unique) { indexId |= 1 << IdUtil.INDEXID_UNIQUE_OFFSET; } index.InitIndexId(indexId); Indexes.Add(index); owner.ChangeSchemaVersion(); }
/// <summary> /// Only used for StoreInitiator /// </summary> internal void AddSysIndex(EntityModel owner, EntityIndexModel index, byte id) { owner.CheckDesignMode(); owner.CheckOwner(index.Owner); index.InitIndexId(id); Indexes.Add(index); }