//Workaround //This method was removed from Direct private static ResourceId NewDocumentId(string collectionId, uint documentId) { ResourceId collectionResourceId = ResourceId.Parse(collectionId); ResourceId documentResourceId = ResourceId.Empty; //Properties have private setters documentResourceId.GetType().GetProperty(nameof(documentResourceId.Database)).SetValue(documentResourceId, collectionResourceId.Database); documentResourceId.GetType().GetProperty(nameof(documentResourceId.DocumentCollection)).SetValue(documentResourceId, collectionResourceId.DocumentCollection); documentResourceId.GetType().GetProperty(nameof(documentResourceId.Document)).SetValue(documentResourceId, documentId); return(documentResourceId); }
public Record Add(int pkrangeid, CosmosObject payload) { // using pkrangeid for database since resource id doesnt serialize both document and pkrangeid. ResourceId currentResourceId; if (this.Count == 0) { currentResourceId = ResourceId.Parse("AYIMAMmFOw8YAAAAAAAAAA=="); PropertyInfo documentProp = currentResourceId .GetType() .GetProperty("Document", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); documentProp.SetValue(currentResourceId, (ulong)1); PropertyInfo databaseProp = currentResourceId .GetType() .GetProperty("Database", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); databaseProp.SetValue(currentResourceId, (uint)pkrangeid + 1); } else { currentResourceId = this.storage[this.storage.Count - 1].ResourceIdentifier; } ResourceId nextResourceId = ResourceId.Parse("AYIMAMmFOw8YAAAAAAAAAA=="); { PropertyInfo documentProp = nextResourceId .GetType() .GetProperty("Document", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); documentProp.SetValue(nextResourceId, (ulong)(currentResourceId.Document + 1)); PropertyInfo databaseProp = nextResourceId .GetType() .GetProperty("Database", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); databaseProp.SetValue(nextResourceId, (uint)pkrangeid + 1); } Record record = new Record(nextResourceId, DateTime.UtcNow.Ticks, Guid.NewGuid().ToString(), payload); this.storage.Add(record); return(record); }