public override void ReadObject(BinSerializer bs) { base.ReadObject(bs); uint propIndex; do { propIndex = bs.ReadUInt32(); switch (propIndex) { case 1: { int count = bs.ReadInt32(); for (int i = 0; i < count; i++) { var m = (EntityMemberModel)bs.Deserialize(); Members.Add(m); } } break; case 2: StoreOptions = (IEntityStoreOptions)bs.Deserialize(); break; case 3: _devMemberIdSeq = bs.ReadUInt16(); break; case 4: _usrMemberIdSeq = bs.ReadUInt16(); break; //case 6: _toStringExpression = (Expression)bs.Deserialize(); break; case 0: break; default: throw new Exception($"Deserialize_ObjectUnknownFieldIndex: {GetType().Name} at {propIndex} "); } } while (propIndex != 0); }
/// <summary> /// New EntityModel for other store /// </summary> internal EntityModel(ulong id, string name, IEntityStoreOptions storeOptions) : base(id, name) { if (storeOptions == null || storeOptions is SysStoreOptions) { throw new ArgumentException(nameof(storeOptions)); } Members = new List <EntityMemberModel>(); StoreOptions = storeOptions; }
void IEntityStoreOptions.UpdateFrom(EntityModel owner, IEntityStoreOptions other) { var from = (CqlStoreOptions)other; if (from != null && from.HasMaterializedView) { var mvComparer = new ViewComparer(); var addedViews = from.MaterializedViews.Except(MaterializedViews, mvComparer); foreach (var addedView in addedViews) { addedView.Import(); this.MaterializedViews.Add(addedView); } var removedViews = MaterializedViews.Except(from.MaterializedViews, mvComparer); foreach (var removedView in removedViews) { removedView.MarkDelete(); } // 暂不需要更新 // var otherViews = this.MaterializedViews.Intersect(from.MaterializedViews, mvComparer); // foreach (var otherView in otherViews) // { // otherView.UpdateFrom(from.MaterializedViews.Single(t => t.Name == otherView.Name)); // } } else { if (HasMaterializedView) { for (int i = 0; i < _materializedViews.Count; i++) { _materializedViews[i].MarkDelete(); } } } }
/// <summary> /// New EntityModel for system store /// </summary> internal EntityModel(ulong id, string name, EntityStoreType storeType, bool orderByDesc = false) : base(id, name) { Members = new List <EntityMemberModel>(); StoreOptions = new SysStoreOptions(storeType, orderByDesc); }
void IEntityStoreOptions.UpdateFrom(EntityModel owner, IEntityStoreOptions other) { throw new NotImplementedException(); }