public override void DeleteFromClientHandler(DeleteMessageReader request, DeleteResponceWriter response) { idDict.Clear(); for (int i = 0; i < Global.ServerCount; i++) { //每个服务器挨个发送 DeleteMessageWriter dmw = new DeleteMessageWriter(request.cellIds, request.columnTypeList, request.con); Global.CloudStorage.DeleteFromProxyToDatabaseServer(i, dmw); } sem.WaitOne(); //等待服务器全部返回信息 response.cellIds = new List <List <long> >(); //将信息合并 for (int i = 0; i < Global.ServerCount; i++) { response.cellIds.AddRange(idDict[i]); } }
public void delete(string con) { if (!isSingle) { throw new Exception(String.Format("不可对多个表进行delete操作")); } DeleteMessageWriter dmw = new DeleteMessageWriter(cellIds, this.columnTypes, con); List <List <long> > newCellIds = Global.CloudStorage.DeleteFromClientToDatabaseProxy(0, dmw).cellIds; foreach (List <long> ids in newCellIds) { this.cellIds.Remove(ids); } TableHeadCell thc = new TableHeadCell(this.tableNames[0], this.columnNames, this.columnTypes, this.primaryIndexs, this.defaultValues, this.cellIds); long thcId = Database.getCurrentDatabase().getTableIdList().ElementAt(Database.getCurrentDatabase().getTableNameList().IndexOf(tableNames [0])); Global.CloudStorage.SaveTableHeadCell(thcId, thc); }