private static string GetRelationshipFromDigitalTwinIds(DigitalTwinsClient client, string sourceTwinId, string targetTwinId) { string relationshipId = ""; string sourcedtmi = ""; string targetdtmi = ""; //obtain the dtmi for the target string q = string.Format("SELECT v.$metadata.$model FROM DIGITALTWINS v WHERE $dtId = '{0}' AND IS_PRIMITIVE(v.$metadata.$model)", targetTwinId); if (q.Length > 0) { Pageable <string> result = client.Query(q); foreach (string s in result) { using (JsonDocument jdoc = JsonDocument.Parse(s)) { JsonElement ele = jdoc.RootElement; targetdtmi = ele.GetProperty("$model").ToString(); } } } //obtain the dtmi for the source q = string.Format("SELECT v.$metadata.$model FROM DIGITALTWINS v WHERE $dtId = '{0}' AND IS_PRIMITIVE(v.$metadata.$model)", sourceTwinId); if ((q.Length > 0) && (targetdtmi.Length > 0)) { Pageable <string> result = client.Query(q); foreach (string s in result) { using (JsonDocument jdoc = JsonDocument.Parse(s)) { JsonElement ele = jdoc.RootElement; sourcedtmi = ele.GetProperty("$model").ToString(); } } dtdlInterfaceModel targetDTDL = DigitalTwinModelMethods.GetDTDLModel(client, sourcedtmi); if (targetDTDL != null) { foreach (dtdlRelationshipModel r in targetDTDL.relationships) { if (r.target == targetdtmi) { relationshipId = r.name; Console.WriteLine("Relationship created: {0}", JsonSerializer.Serialize <dtdlRelationshipModel>(r)); break; } } } } return(relationshipId); }
/// <summary> /// Queries for all digital twins using <see cref="DigitalTwinsClient.Query{T}(string, CancellationToken)"/>. /// </summary> /// <param name="cancellationToken">The token used to signal cancellation request.</param> public override void Run(CancellationToken cancellationToken) { Pageable <BasicDigitalTwin> result = _digitalTwinsClient .Query <BasicDigitalTwin>($"SELECT * FROM DIGITALTWINS WHERE TestId = '{_testId}'", cancellationToken); long resultCount = 0; foreach (BasicDigitalTwin a in result) { resultCount++; } #if DEBUG resultCount.Should().Be(_size); #endif }